实现java中接口和抽象类中存在的方法

moh*_*abu 5 java oop abstract-class interface

我试图理解如果抽象类和接口中都存在方法会发生什么.下面,我发布了一个场景,让你清楚地了解我所指的是什么.

interface act
{
    void read();
}

abstract class enact
{
    void read() {
        System.out.println("hello");
    }
}

public class second extends enact implements act  
{
    public void read() {

        // does method read() correspond to  Interface or abstract class?
    }
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,编写此代码时没有编译错误.任何建议都会非常有帮助.

Ria*_*iaz 1

我只是想知道方法 read() 是否与接口或抽象类相关

或者两者都不是,真的。这取决于您实际使用它的上下文中的明显类型。例如,无论你是否这样做

enact example = new second();
Run Code Online (Sandbox Code Playgroud)

或者

act example = new second();
Run Code Online (Sandbox Code Playgroud)

两者都允许您编译代码:

example.read();
Run Code Online (Sandbox Code Playgroud)

因为 read() 方法是在 act 和 enact 两种表观类型中定义的。但在这两种情况下,真正重要的是“第二”类中定义的 read() 定义。这就是被执行的。