假设你有一个像这样的干净课:
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.