java - 为什么在引用实现该接口(interface)的类实例时此接口(interface)实例会出现错误

标签 java interface

我是java新手,在尝试一些输出是什么问题时我发现了这一点。

这行InterfaceB obj = new ClassA();给出了错误,而其他行则没有。

我知道父类(super class)变量可以引用与接口(interface)相同的子类变量。 但那样的话会发生什么。我想知道所见的背后到底发生了什么。

interface InterfaceA { void methodA(); }

interface InterfaceB extends InterfaceA { void methodB(); }

class ClassA implements InterfaceA
{
     public void methodA() {}
     public void methodB() {}
}

class ClassB extends ClassA implements InterfaceB
{
     public ClassB() {}
     // InterfaceA obj = new ClassA(); no error 
     InterfaceB obj = new ClassA(); //give  error: incompatible types
     // InterfaceA obj = new ClassB(); no error
     // InterfaceB obj = new ClassB(); no error
      // ClassA obj = new ClassB(); no error
}

public class Online4 {
    public static void main(String args[]) {
        ClassB b = new ClassB();
    }
}

最佳答案

您收到此错误是因为 ClassA 未实现接口(interface) B。

永远记住java中的父类型可以引用子类型。

此处,类型 IntefaceB 与类型 ClassA 没有任何关系。为了下面的工作

InterfaceB obj = new ClassA(); 

ClassA 需要其父类型为 InterfaceB(直接或通过任何其他实现 InterfaceB(类)或扩展 InterfaceB(接口(interface))的类型。

关于java - 为什么在引用实现该接口(interface)的类实例时此接口(interface)实例会出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17629009/

相关文章:

java - 使用 Coldfusion 以编程方式访问 Google Voice Java API

java - 如果我们有 @Override 为什么没有 @Implementation 或 @Implements`?

java - 为什么Java中没有Hashable接口(interface)

java - Android/Java通用json导入接口(interface)

java - 实例变量的构造函数/自引用

java - 如何在java中保存绘图面板中的图像?

C++ 接口(interface)错误;标识符 "class"未定义

java - 为什么实现接口(interface)的抽象类可能会错过接口(interface)方法之一的声明/实现?

java - 无法加载 JDBC 领域的组

java - 如何让 JLabel 在不可见时占用空间?