【问题标题】:Why instance of base class chooses to execute base method of parent constructor?为什么基类的实例选择执行父构造函数的基方法?
【发布时间】:2020-07-17 06:53:01
【问题描述】:

代码如下:

class Food {
    Food() { printFlavor(); }
    void printFlavor() { System.out.println("bland"); }
}
class Pepper extends Food {
    void printFlavor() { System.out.println("spicy"); }
}
public class Lunch {
    public static void main(String[] args) {
        Food lunch = new Pepper();
    }
}

当我确保使用this关键字运行自己的类的自己的方法时,它仍然运行基本方法。

class Food {
    Food() { this.printFlavor(); }
    void printFlavor() { System.out.println("bland"); }
}
class Pepper extends Food {
    void printFlavor() { System.out.println("spicy"); }
}
public class Lunch {
    public static void main(String[] args) {
        Food lunch = new Pepper();
    }
}

我的问题不是如何解决这个问题。 我的问题是为什么父构造函数选择调用基方法而不是父方法?

【问题讨论】:

标签: java oop


【解决方案1】:

原因是每当您创建子类的对象时,都会首先调用父类的构造函数(默认情况下),然后是子类的构造函数。

要运行父类方法,需要创建父类对象 Food obj = new Food。 您创建的对象类型不是 Food Class ,而是 Pepper Class。

【讨论】:

  • 那么,对于方法来说,先调用基方法,再调用父方法???
  • 不只是构造函数,先调用基类构造函数,再调用子类cons
猜你喜欢
  • 2016-09-16
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多