super 调用父类中的构造器:
1.在子类中我们可以通过使用“super(参数列表)” 的方式,调用父类中已经声明的构造函数
2.“super(参数列表)” 的方式的使用必须声明在子类构造器的首行
3.因为 2 的特性,所以“this(形参列表)”和“super(形参列表)”在累的构造器中,只能二选一
4.如果在子类的构造器中不使用super,会默认加上“super()”,为了使其不报错,父类中最 好加上一个不含参数的构造器
父类:
package 继承;
public class Person extends Creature{
String name;
int age;
String id = "12345678910"; //身份证号
public Person(){ //子类的构造器中不使用super,会默认加上“super()”,为了使其不报错,父最好加上一个不含参数的构造器
System.out.println("我是Person中的不含参数的构造器");
}
public Person(String name,int age) {
this.name=name;
this.age=age;
}
public String eat() {
return "吃饭";
}
}
子类:
package 继承;
public class Student extends Person{
String major;
String id = "2018450800"; //学号
public Student() {}
public Student(String name,int age,String major) {
super(name, age); //super 调用构造器,只能放在首行
this.major=major;
}
public void study() {
System.out.println("学习");
}
public void showinfo() {
System.err.println("name:"+name+"\nage:"+age+"\nmajor:"+major+"\n");
}
}
main():
package 继承;
/**
*
* @Description super 调用构造器
* @author HuXuehao Email:1938667362@qq.com
* @version
* @date 2020年8月10日上午9:26:51
*/
/*super 调用父类中的构造器
* 1.在子类中我们可以通过使用“super(参数列表)” 的方式,调用父类中已经声明的构造函数
* 2.“super(参数列表)” 的方式的使用必须声明在子类构造器的首行
* 3.因为 2 的特性,所以“this(形参列表)”和“super(形参列表)”在累的构造器中,只能二选一
* 4.如果在子类的构造器中不使用super,会默认加上“super()”,为了使其不报错,父类中最好加上一个不含参数的构造器
*
*/
public class super_use_constructor {
public static void main(String[] args) {
Student student = new Student("hudazhaung",18,"IT");
student.showinfo();
Student student2 = new Student(); //子类的构造器中不使用super,会默认加上“super()”
}
}
结果: