1.首先,第一次执行完源代码后
了解到当调用一个子类的构造方法时,它会依次调用父类的构造函数。以下是原因:当一个类继承了其它类时,在它的构造函数(constructor)中super()
必须被首先调用,如果super()
没有被调用,则编译器将在构造函数(constructor)的第一行插入对super()
的调用。这就是为什么当创建一个子类的对象时会调用父类的构造函数(constructor)的原因。
通过super调用基类构造方法时,必须是子类构造方法中的第一个语句。否则就会报错
构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。
子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。
不能反过来调用也是这个原因,因为父类根本不知道子类有什么变量而且这样一来子类也得不到初始化的父类变量,导致程序运行出错!
2.
代码:
/*
信1705-1 杨瑞 20173610
*/
package dongshouyoudongnao;
class A
{
public void display() {
System.out.println("A方法");
}
}
class B extends A
{
public void display() {
super.display();
System.out.println("B方法");
}
}
public class Fruit
{
public static void main(String[] args) {
B b=new B();
b.display();
}
}
原文地址:https://www.cnblogs.com/qianmo123/p/9890519.html
时间: 2024-10-08 11:58:00