入门·总结1.构造器和方法的区别?构造器:(1).没有返回类型;(2).构造器必须与类名相同(一般是个名词,一般大
入门·总结
1.构造器和方法的区别?
构造器:
(1).没有返回类型;
(2).构造器必须与类名相同(一般是个名词,一般大写);
(3).也可以传入参数;
(4).构造器可以通过this关键字调用构造器和方法;
方法:
(1).有返回类型,其中返回类型又分有返回值和无返回值(void);
(2).一般是个动词,一般是小写;
(3).分为有参方法和无参方法;
(4).一般方法不能调用构造器;
2.值传递和引用传的区别.
值传递:
仅将对象的值传递给目标对象,即传递内存中的值,如果改变目标对象,原始不会因此而改变。
引用传递:
将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。
如果对目标对象进行修改,内存中的数据也会改变。
(类似于C中的传地址)
例如:
Student a1=new Student();
Student a2=a1;
此时是引用传递,如果对a2进行操作即相当于对a1进行操作,即a2与a1是同一对象的不同名字了。
而在值传递中,a2会分一个与a1不同的空间,此时改变a2,不会对a1有影响。
3.重载(overLoad)和重写(overWrite)的区别.
方法的重载(在一个类中,没有继承关系):
(1)定义多个同名(方法的名字要相同!),但参数类型和参数个数不同。
(3)可以改变返回值的类型,即返回值类型可以相同也可以不同。
(2)重载是一个类中多态性的一种表现
方法的重写(前提:要有继承关系):
(1)子类中保持方法的定义不变,方法内部实现父类的不同
(2)重写是父类与子类之间多态性的一种表现
4.继承父类和实现接口的区别?
(1)一个类只能继承一个父类。但是,一个类可以实现多个接口。
(2)继承一般继承的是事物的属性,如:姓名,年龄,性别等,而接口的实现一
般是继承事物的行为,如:行走,学习,游泳等
---------------------------------------------------
完成一个小应用:
输入正确的用户名,密码--->显示主界面--->可以在主界面上画三角形
------------------------------------->
package Draw2;import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public class DrawJFrame {public static void main(String[] args) {DrawJFrame jf=new DrawJFrame();jf.showJFrame();}public void showJFrame(){JFrame jf=new JFrame();jf.setTitle("画板登陆");jf.setSize(330,200);jf.setDefaultCloseOperation(3);//关闭窗体是程序退出jf.setLocationRelativeTo(null);//居中显示 //流式布局管理器FlowLayout fl=new FlowLayout();jf.setLayout(fl);//添加组件JLabel la=new JLabel("账号");JTextField te=new JTextField(20);JLabel labe=new JLabel("注册");jf.add(la);jf.add(te);jf.add(labe);JLabel lab=new JLabel("密码");JTextField tex=new JTextField(20);JLabel l=new JLabel("找回");jf.add(lab);jf.add(tex);jf.add(l);//按钮JButton bu= new JButton("登陆");jf.add(bu);//创建动作监听器DrawListener dr=new DrawListener(te,tex);bu.addActionListener(dr);jf.setVisible(true);}}======================================================================
package Draw2;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class DrawListener implements ActionListener{
//文本框中的内容是JTextField型的
private JTextField te;
private JTextField tex;
//构造器,将文本框中的内容传入
public DrawListener(JTextField te,JTextField tex){
this.te=te;
this.tex=tex;
}
public void actionPerformed(ActionEvent e) {
String n=te.getText();
String s=tex.getText();
if(n.equals("hupengwei")&&s.equals("921010")){
//创建画板界面
JFrame jf=new JFrame();
jf.setTitle("恭喜您,登陆成功!");
jf.setSize(500,500);
jf.setDefaultCloseOperation(2);//关闭窗体是程序退出
jf.setLocationRelativeTo(null);//居中显示
jf.setVisible(true);
//画布要在监听器前加!否则报错!~~
//添加画布
java.awt.Graphics g = jf.getGraphics();
//鼠标监听器
DrawListener1 dl=new DrawListener1(g);
jf.addMouseListener(dl);
}
else{
javax.swing.JOptionPane.showMessageDialog(null, "你输入的账号或者密码错误,请重新输入!");
}
}
}
======================================================================
package Draw2;
//接口的实现
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class DrawListener1 implements MouseListener{
private int clickcount;
private int x1,y1,x2,y2,x3,y3;
private java.awt.Graphics g;
//用构造器传入画布的对象
public DrawListener1(java.awt.Graphics g){
this.g=g;
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
//创建一个鼠标计数器,记录点击的次数,并记录该点的坐标
if(clickcount==0){
x1=e.getX();
y1=e.getY();
clickcount++;
}
else if(clickcount==1){
x2=e.getX();
y2=e.getY();
clickcount++;
}
else if(clickcount==2){
x3=e.getX();
y3=e.getY();
clickcount=0;
//在画布上画线
g.drawLine(x1, y1, x2, y2);
g.drawLine(x2, y2, x3, y3);
g.drawLine(x1, y1, x3, y3);
//输出三点的坐标
System.out.println ("x1:"+x1+"y1:"+y1+"x2:"+x2+"y2"+y2+"x3:"+x3+"y3:"+y3);
}
}
@Override
public void mouseReleased(MouseEvent e) {
//System.out.println("放开");
}
}