1.子类不可以继承父类的构造方法
构造方法的名称必须与类名一致,上图中类名是Zi,而构造方法名是Fu,肯定不行
2.子类在初始化之前,需要对父类初始化
子类在初始化的过程中,很有可能会调用到父类的数据,如果父类没有提前初始化,子类就无法调用这些数据
3.通过在子类中访问父类的构造方法,从而初始化父类的数据
案例:
1.老师类和学生类中都有姓名和年龄的共性,所以写一个“人”的父类
2.接着写老师类,老师类继承了父类,又因为构造方法无法继承,所以老师类中的构造方法需要自己书写
通过快捷键快速书写子类的构造方法
因为父类中存在一个空参的构造方法和一个带参构造方法,所有系统会询问我们要打印哪种构造方法,直接ctrl+a全选即可
子类继承了父类,共性的变量我们只需要通过父类即可获取到,无需再在子类中写出(Person中有name和age两个变量,而Teacher中没有)
而如何初始化父类中的这些变量就是通过子类的构造方法再加上super()访问父类的构造方法来实现的
创建了老师对象,提供了实参,然后实参传递给形参,形参又传递给super(),super()又传递给父类的构造方法,从而实现了变量的初始化
理解了这一步,后面的就好写了,接着写学生类,学生类多了一个成绩,这就要我们自己单独在学生类中写出
完成了所有变量的初始化后,因为父类中的变量都被私有化,不能直接拿着变量名来使用,但因为子类都已经继承了父类,getName()等方法都可以直接使用,所以我们通过这些方法来打印
我们可以选择使用super.来调用父类中的get方法,但是仔细想想,老师类和学生类都已经继承了Person类,就相当于它们也有一模一样的get方法,那就没必要再通过super.来调用父类的get方法,而可以直接使用get方法
.
如上图,Zi类继承Fu类,就相当于Zi类中已经有了父类的所有成员,可以直接使用
最后,打印结果