有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我们可以在子类构造函数中调用超类方法?

我需要一个更好的解释我不知道这是否是Java语言本身提供的功能

//super class
public class Student {
    public Student(){}

    public void display(){
        System.out.println("Hello from Student");
    }       

}

//Subclass
public class SeniorStudent extends Student {

    public SeniorStudent(){
        super();
        display();
    }

    public static void main(String[] args) {
        SeniorStudent st=new SeniorStudent();
    }
}

当我运行程序时,会调用display()方法。 这里的逻辑是什么


共 (1) 个答案

  1. # 1 楼答案

    在子类中调用display方法,但如果不重写display()方法,它会自动调用父类。类的构造是在类中执行的第一部分。您的软件的逻辑如下:

    • 开始执行main方法,在其中创建seniorStudent的新实例
    • 已调用SeniorStudent构造函数并开始执行
    • SeniorStudent的构造函数要做的第一件事是调用父构造函数(它什么都不做)
    • 然后,在执行完整个父构造函数之后,继续执行SeniorStudent构造函数,在这里调用display方法,但SeniorStudent类没有任何display方法,所以调用它的父display方法

    因此,如果您想在控制台中打印“Hello from senior student”,您必须像这样更改senior student类

        public class SeniorStudent extends Student {
    
        public SeniorStudent(){
            super();
            display();
        }
        public void display(){
          system.out.println("Hello from senior Student");
        }
    
        public static void main(String[] args) {
            SeniorStudent st=new SeniorStudent();
        }
    }
    

    如果你把超级。display()在SeniorStudent类的display方法中,调用父display方法,然后执行senior student display方法,使输出类似

    "Hello from Student"
    "Hello from Senior Student"
    

    希望我不太清楚,但如果你有什么问题,我很乐意帮助你