使用构造器时需要记住:
1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)
2.每个类可以有一个以上的构造器
3.构造器可以有0个、1个或1个以上的参数
4.构造器没有返回值
5.构造器总是伴随着new操作一起调用
6.不添加任何构造器会默认有空的构造器
继承与构造器
使用super调用父类构造器的语句必须是子类构造器的第一条语句
为什么加上super?
Java的构造器并不是函数,所以他并不能被继承,这在我们extends的时候写子类的构造器时比较的常见,即使子类构造器参数和父类的完全一样,我们也要写super就是因为这个原因。
如果子类构造器没有显式地调用父类的构造器,则将自动调用父类的默认(没有参数)的构造器。如果父类没有不带参数的构造器,并且在子类的构造器中又没有显式地调用父类的构造器,则java编译器将报告错误
构造器例程
package com.cpsec.construct;
public class ConstructorTest {
private String name;
private int age;
private int id;
//构造方法
public ConstructorTest(String name,int age ,int id){
//this指向当前对象
this.age = age;
this.name = name;
this.id = id;
}
public void print(){
System.out.println("姓名 "+name+"年龄 "+age+"学号 "+id);
}
public static void main(String[] args) {
//利用自己添加的构造方法
//简化了代码,简化了在实例化事的赋值操作
ConstructorTest ct = new ConstructorTest("ChaosJu",22,591);
ct.print();
ConstructorTest ct2 = new ConstructorTest("利用构造函数简化代码",22,591);
ct2.print();
}
}
比较的例程
package com.cpsec.construct;
public class ConstructorTest2 {
private String name;
private int age;
private int id;
//空的构造方法,可以省略 ,编译器会默认添加(如果没有其他非空参数的构造器)
public ConstructorTest2(){
}
public void print(){
System.out.println("姓名 "+name+"年龄 "+age+"学号 "+id);
}
public static void main(String[] args) {
//利用自己添加的构造方法
//简化了代码,简化了在实例化事的赋值操作
ConstructorTest2 ct = new ConstructorTest2();
ct.name = "ChaosJu";
ct.age = 22;
ct.id = 591;
ct.print();
}
}