使用Java进行转换(接口和类)
如果:
interface I{} class A implements I{} class B extends A{} class C extends B{} A a = new A(); B b = new B(); Why a = (B)(I)b; is correct but b = (B)(I)a; is false?
我发现施法很混乱,如果我可以向下施放或向上施放物体,最好的方法是什么?
您的类层次结构如下所示:
与您的编码示例中回答问题相关的唯一事项如下:
class B extends A{}
这意味着B是A的子类。子类可以转换为超类类型,但超类不能转换为子类类型。
因此,A不能转换为B类。
为什么? 以这种方式思考逻辑:
是一种Programming_language
,但Programming_language
不是一种类型