繁体   English   中英

Java中关于Inheritance的简单问题

[英]Simple question about Inheritance in Java

我有一个关于 inheritance 的问题。 如果我想从子 class 中的父 class 调用方法,我应该使用 super.method() 还是 this.method()? 在我正在编程的程序中,它们都可以工作,所以我同时使用它们,但我并不认为这是正确的方法。

例如,假设我有一个名为“Vehicle”的 class 和另一个我们称之为“Airplane”的。 假设我在 Vehicle 中有一个 brand() 方法。 我应该使用 this.brand() 还是 super.brand()?

先感谢您。

考虑这个代码片段,

class Vehicle {
    public void brand(){
        System.out.println("This is a vehicle");
    }
}

class Airplane extends Vehicle {
    public void brand() {
        System.out.println("This is an airplane");
    }

    public void anotherMethodInAirplane() {
        this.brand();
        super.brand();
    }
}

public class Main {
    public static void main(String[] args) {
        Airplane airplane = new Airplane();
        airplane.anotherMethodInAirplane();
    }
}

如果您要执行此操作,您会看到 this.brand() 首先打印“这是一架飞机”,然后 super.brand() 打印“这是一辆汽车”。

所以,

  1. 如果你调用 super.someMethod(),它总是会调用你超类中的方法。
  2. 如果您调用 this.someMethod() 并且 someMethod() 已被您的子类(在此示例中为 Airplane)覆盖,那么它将被调用。
  3. 但是,如果 someMethod() 在您的子类中没有被覆盖,那么 someMethod() 的 super class 实现将默认执行

希望这对您有所帮助,如果您有任何后续问题。 请 go 在前面,如果这个答案对你有帮助。 如果您将此答案标记为“已接受”,我将非常感激:祝您有美好的一天:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM