构造器的名字必须和类名相同,而匿名内部类没有类名,所有不可以有构造器
1 构造方法不能用对象调用;A:构造方法概述和作用,给对象的数据(属性)进行初始化 B:构造方法格式特点a:方法名与类名相同(大小也要与类名一致)
b:没有返回值类型,连void都没有
c:没有具体的返回值return;-----重载:方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表,系统默认创造一个无参数的,我们创建系统就不提供了!
1 可以重载,和类名相同,this()才是调用构造函数的第一条语句,this是不需要的,this()和super()为构造方法,作用是在jvm构建一个对象,同一个方法只能调用一次!!!
2 java没有静态的构造函数,只有静态初始化快,
3 构造方法不能被子类继承,所以用final修饰没有意义。构造方法用于创建一个新的对象,不能作为类的静态方法,所以用static修饰没有意义。此外,Java语言不支持native或synchronized的构造方法。
4 this()才是构造函数的第一个可以运行的语句this调用是不必须的,注意小括号!!
5 构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同–一定要与定义为public的类同名。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(5)构造方法可以重载,以参数的个数,类型,顺序,但是参数列表必须不相同,不以返回值和访问级别进行区分
(6) 构造方法不能被对象调用,只会创建对象,使用new关键字
(7) 不创建,系统默认提供一个无参数的,也就是缺省构造器,一旦提供,系统就不会提供啦
7 子父类存在同名成员时,子类中默认访问子类的成员,可通过super指定访问父类的成员,格式:super.xx (注:xx是成员名);
2.创建子类对象时,默认会调用父类的无参构造方法,可通过super指定调用父类其他构造方法,格式:s uper(yy) (注:yy是父类构造方法需要传递的参数)
8 子类构造方法在调用时必须先调用父类的,由于父类没有无参构造,必须在子类中显式调用,否则异常!修改子类构造方法如下即可:
public Derived(String s){
super(“s”);
System.out.print(“D”);
}
9 识别合法的构造方法;
1:构造方法可以被重载,一个构造方法可以通过this关键字调用另一个构造方法,this语句必须位于构造方法的第一行;
重载:方法的重载(overload):重载构成的条件:方法的名称相同,但参数类型或参数个数不同,才能构成方法的重载。
2 当一个类中没有定义任何构造方法,Java将自动提供一个缺省构造方法;
3 子类通过super关键字调用父类的一个构造方法;
4 当子类的某个构造方法没有通过super关键字调用父类的构造方法,通过这个构造方法创建子类对象时,会自动先调用父类的缺省构造方法
5 构造方法不能被static、final、synchronized、abstract、native修饰,但可以被public、private、protected修饰;
6 构造方法不是类的成员方法;
7 构造方法不能被继承。