相关疑难解决方法(0)

将已知类型的引用转换为类型层次结构之外的接口

假设你有一个像这样的干净课:

public class A {
    // Stuff
}
Run Code Online (Sandbox Code Playgroud)

和这样的界面:

public interface G {
    // Stuff
}
Run Code Online (Sandbox Code Playgroud)

为什么我被允许这样做:

A a = new A();
((G) a) // No errors thrown
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么当它们彼此无关时,应该可以从A类转换到接口G. 有人可以向我解释一下吗?


跟进.如果我做以下事情:

public class C implements G {
    // Stuff
}
Run Code Online (Sandbox Code Playgroud)

这不会编译:

((C) a)
Run Code Online (Sandbox Code Playgroud)

实现接口的类和接口之间有什么区别?

编辑:我得到一个编译器错误说:

无法从A转换为C.

java oop casting

3
推荐指数
1
解决办法
425
查看次数

标签 统计

casting ×1

java ×1

oop ×1