gpt4 book ai didi

java - 通过继承和接口(interface),同一个方法可以在一个类中存在两次吗?

转载 作者:行者123 更新时间:2023-11-29 06:40:21 25 4
gpt4 key购买 nike

这是场景:-

class Canine{
public void roam(){
System.out.println("Canine-Roam");
}
}

public interface Pet{
public abstract void roam();
}


class Dog extends Canine implements Pet{

public void roam(){
System.out.println("Dog Roam");
}
public static void main(String [] args){
Dog adog = new Dog();
adog.roam();
}
}

我知道 JVM 在选择要运行的方法时一定不会有任何混淆,也就是说,哪个方法会被覆盖。但我还是很困惑。为什么这个程序可以编译?

最佳答案

否 - 同一个方法不能在一个类中出现两次。

接口(interface)只是为类声明要求 以实现特定方法。它实际上并不创建该方法。

因此,通过继承获得方法实现的类定义了该方法。此(单个)实现满足接口(interface)的要求。

在你的情况下:

  1. Dog 扩展了 Canine,所以这意味着 Canineroam() 方法可用,并且如果不被覆盖,将作为 Dog 对象的方法公开。
  2. 但是 Dog 然后 覆盖 父类(super class)的方法,它有自己的 roam() 定义。这是允许的,并且在 Dog 上仍然只有一种名为 roam() 的明确方法 - 新的覆盖。
  3. Dog 实现了Pet,这意味着它需要有一个roam() 方法。它确实如此 - 所以它是此接口(interface)的有效实现。

关于java - 通过继承和接口(interface),同一个方法可以在一个类中存在两次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13084980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com