动手动脑
为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?
子类的构造方法在运行之前必须调用父类的构造方法是因为子类继承了父类的属性和方法,而父类的构造方法负责初始化父类的属性和执行父类的相关操作。通过调用父类的构造方法,子类可以确保父类的属性正确初始化,并且可以利用父类的方法进行必要的操作。
反过来,即子类的构造方法先于父类的构造方法执行,是不可行的。因为子类继承了父类的属性和方法,子类的构造方法在执行之前需要先确保父类的属性正确初始化,如果先执行子类的构造方法,那么父类的构造方法就会被跳过或者以错误的状态执行,导致父类的初始化过程不完整或不正确。
因此,为了保证继承链的完整性和正确性,子类的构造方法在运行之前必须调用父类的构造方法。这样可以确保父类和子类的属性都得到正确初始化,继承关系得以维持。
方法覆盖要求子类与父类的方法一模一样,否则就是方法重载(overload)! 请自行编写代码测试以下特性(动手动脑): 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字
class Parent { void display() { System.out.println("This is the parent class"); } } class Child extends Parent { @Override void display() { super.display(); // 使用super关键字调用父类的被覆盖的方法 System.out.println("This is the child class"); } } public class Main { public static void main(String[] args) { Child child = new Child(); child.display(); } }
This is the parent class
This is the child class