在下面的代码中,有人可以向我解释“A ba = (A)b;”的含义吗?并向我解释输出以及它们是如何导出的。
class A {
public void f(A a) { System.out.println("fa(A)");}
public void f(B b) { System.out.println("fa(B)");}
}
class B extends A {
public void f(A a) { System.out.println("fb(A)"); }
public void f(B b) { System.out.println("fb(B)"); }
}
public class TypeMeister {
public static void main(String[] args){
A a = new A();
B b = new B();
A ba = (A)b; //please explain
a.f(a);
a.f(b);
b.f(a);
b.f(b);
a.f(ba);
b.f(ba);;
ba.f(a);
ba.f(b);
ba.f(ba);
}
}
谢谢你的帮助。
A ba = (A)b;
是显式类型转换操作。b
显式属于 类型B
,但隐式属于 类型A
,因为B
是 的子类A
。
由于B
是 的子类A
,您可以这样初始化对象b
:
A b = new B();
这相当于
B b = new B();
A ba = (A)b;
...但短了 1 行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句