生成子类的过程
见代码:
class Person { String name; int age; Person(){ System.out.print("Person的无参数构造函数"); } Person(String name,int age){ this.name = name; this.age = age; System.out.print("Person的有2个参数的构造函数"); } void eat(){ System.out.print("吃饭"); } }
class Student extends Person{ int grade; Student(){ //在子类的构造函数当中,必须调用父类的构造函数 //如果没有写父类的构造函数,那么编译器会自动加上 super(); //super(根据参数调用父类中相应的构造函数); System.out.print("Student的无参数构造函数"); } Student(String name,int age,int grade){ //this.name = name; //this.age = age; super(name,age);//减少重复代码 this.grade = grade; } }
class Text{ public static void main(String args[]){ Student s = new Student("zhansan",18,90); System.out.print(s.name); System.out.print(s.age); System.out.print(s.grade); } }
使用super调用父类构造函数的方法
由于子类继承了父类的成员变量和成员函数,但无法继承父类的构造函数,所以在为成员变量赋值的时候会出现代码重复。为解决这个问题,用super调用父类的构造函数。。
注意:super在构造函数中要在第一行。