重点:extends是不可以继承父类的构造函数的,只能继承父类的成员变量和成员函数。
用super()就可以调用父类的构造函数了。
解决了两个类当中的构造函数里重复的代码。
eg:
class Person{
String name;
int age;
Person(){
System.out.println("person的无参构造函数");
}
Person(String name,int age){
this.name = name;
this.age = age;
System.out.println("person的有参数构造函数");
}
void eat(){
System.out.println("吃饭");
}
}
class Student extends Person{
int grade;
//在子类的构造函数当中,不需调用父类的构造函数(自动生成!)?
Student(){
super();//像this,里面的参数决定用父类的构造函数
System.out.println("students的无参构造函数");
}
Student(String name,int age,int grade){
//this.name = name;
//this.age = age;
super(name,age);//解决了上方的父类的重复代码
this.grade = grade;
}
}
主函数:
class Test{
public static void main(String arge[]){
Student student = new Student("zhangsan",18,3);
System.out.println(student.name);
System.out.println(student.age);
System.out.println(student.grade);
//调用student类是,会先调用student的父类。
}
}
结果可想而知,输出的是student的有参的构造函数,并且先编译person的有参构造函数,在编译student的有参构造函数。