java - 将子类转换为父类(super class)实现的子接口(interface)

标签 java inheritance casting

我的结构是这样的:

interface SuperInterface{}

interface SubInterface extends SuperInterface{}

abstract class BaseClass implements SuperInterface{}

class SubClass extends BaseClass {}

我想要做的是将 SubClass 转换为 SubInterface

SubInterface instanceOfSubClass = (SubInterface) new SubClass ();

但我遇到了转换异常。

那么为什么我不能转换为 SubInterface,即使它扩展了 SuperInterface 并且不添加任何内容?它只是 SuperInterface 的包装,由 BaseClass 实现

最佳答案

“SubClass”继承自实现SuperInterface的BaseClass

因此“SubClass”符合类型“BaseClass”和“SuperInterface”

您无法转换为“SubInterface”,因为 SubInterface 是不同的类型。即使你不向它添加任何函数而只是使用ist作为Wrapper,它也是另一种类型

SuperInterface
    -BaseClass
        --SubClass
    -SubInterface

可以看到,SubClass并不在SubInterface的继承路径中

关于java - 将子类转换为父类(super class)实现的子接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37589399/

相关文章:

c++ - 动态转换后调用特定的类方法 - 奇怪的行为

c++ - 如何在 C++ 中将 Foo** 指针转换为 const Foo**

java - 错误 APIRest JBPM 6.2 RemoteRuntimeEngineFactory

克隆实体上的 java.util.ConcurrentModificationException

java - 如何在 Java 中同时调用方法?

java - 在子类java中更改类变量类型

c# - 接受 List<T> 的通用方法

Java 添加到 arraylist 会覆盖其他值

java - 子类对象只能从父类(super class)对象继承某些参数吗?

ios - 在 Objective-C 中进行比较 - 使用 ARC 不允许将 'int' 隐式转换为 'id'