一.构造函数:
1.构造函数的方法名和类名相同。
2.构造函数没有返回值,不能有return 关键字。
3.多个构造函数以重载的形式存在。
二。
public class Liu {
public static void main(String[] args) {
new Liu();
Liu k=new Liu();
}
public Liu() {
super();
// TODO Auto-generated constructor stub
System.out.println("我是构造函数liu");
}
public void jian(){
System.out.println("我是普通方法jian");
}
}
调用方式一:
new Liu();
Liu k=new Liu();
结果:
我是构造函数liu
我是构造函数liu
结论是:两种调用方式是等价的。一种是匿名对象,一种是普通的实例化对象。
调用方式二:
new Liu().jian();;
Liu k=new Liu();
k.jian();
结果为:
我是构造函数liu
我是普通方法jian
我是构造函数liu
我是普通方法jian
结论是:两种方式调用普通方法是等价的;先执行构造函数,后执行普通方法。
调用方式三:
在main方法中:在普通方法前加static,通过类名.普通方法名的形式调用;Liu.jian();完全可以
this.jian();是错误的方式。
结论是:
在静态方法中调用对象的方式:如果调用非静态方法通过实例对象调用相应的方法:Liu k=new Liu();k.jian();
如果调用是静态方法通过类名.方法名的形式。Liu.jian();
不能使用this.方法名的形式。因为静态方法不允许有this关键字。
1.对象一旦建立,就会调用与之对应的构造函数;作用是给对象初始化。
2.当一个类中没有定义构造函数,系统默认会给此类加入一个空参数的构造函数。当一个类中定义了构造函数,定义的构造函数覆盖掉默认的空参数构造函数,默认构造函数就没有了。
三 构造函数与构造代码块的区别
1.构造函数是给具体实例对象进行初始化。
2.构造代码块是给所有对象进行初始化。
四 构造函数和普通方法
1.构造函数:对象一旦建立就会调用对应的构造函数。只调用一次。
2.普通方法:对象建立后,调用具体方法时才执行。可以被多次调用。
五 匿名对象
1.当实例化对象只调用一次,可以用匿名对象,这样方便。
2.当实例化对象想多次调用,需要给对象起一个名字,这样可以多次调用。
例如:类Liu中有属性name,age;单纯为获取name属性,则用匿名对象new Liu().age;即可;当同时想获取name,age属性,不能用匿名对象
需要给对象起一个名字:Liu a=new Liu(); a.name; a.age;
3.匿名对象作为实际参数在方法中传送。
Liu a =new Liu(); show(a);<=> show(new Liu());