构造器的做用是构造并初始化实例对象。当建立一个对象时,系统为这个对象的属性进行初始化。java
class 类名 { 变量声明; 类的名称(参数列表) { 方法体 } }
构造器和类要有相同的名字,同时避免在构造器中定义与实例域重名的局部变量。例如this
class student { private String name; private int studentID; //构造器 public student(String n,int m){ name=n; studentID=m; /*定义与实例域重名的局部变量 *这种错误很难被发现 String name=n; int studentID=m; */ } }
构造器和类具备相同的名字code
一个类能够有多个构造器对象
构造器能够有0、1或多个参数编译器
构造器没有返回值和返回类型编译
构造器不能被显示调用,老是与new运算符仪器被调用,在建立一个类的新队形的同时,系统会自动调用该类的构造器为新对象初始化。class
在java的每一个类中,至少要有一个构造器,没有定义的话,编译器将自动插入缺省的构造器。
这种默认初始化被全部数值类型设为0
,布尔值为false
,全部引用类型的属性设置为null
变量
若是类中提供了至少一个构造器,可是没有提供无参数的构造器,构造对象没有提供参数就会被视为不合法。权限
class student { private String name; private int studentID; //构造器 public student(String name,int studentID){ this.name=name; this.studentID=studentID; } } student=new student(); //产生错误
解决方法:能够为java类保留无参数的构造器,为一个类编写了有参数的构造器,同时建议为该类编写一个无参数的构造器。通常把构造器设置为public访问权限,设置为private是为了阻止其余类建立该类的实例。数据类型
一个方法的签名包括方法名、参数类型和个数,但不包括返回值。
类的定义中存在两个或两个以上的同名成员方法,为了使编译器能区分同名的成员方法,使同名方法的参数个数或参数的数据类型不一样,从而使编译器可以挑选具体执行某个方法。
class student { private String name; private String major; private String school; private int studentID; //构造器1 public student(String name,int studentID){ this.name=name; this.studentID=studentID; } //构造器2 public student(String school){ this.school=school; } //构造器3 public student(String major,int studentID){ this.major=name; this.studentID=studentID; } }
class student { private String name; private String major; private String school; private int studentID; //构造器1 public student(String name,int studentID){ this("大山高中") //调用另外一个构造器 this.name=name; this.studentID=studentID; } //构造器2 public student(String school){ this.school=school; }
当咱们想调用超类的的某个方法,可是当前类也有相同的方法,这时可使用super
关键字(只是一个指示编译器调用超类方法的特殊关键字)。
class A{ public A(){ System.out.print("A"); } } class B extends A{ public B(){ super();//调用父类构造方法,打印A System.out.print("B"); } }