在下面的代码中,有人可以向我解释“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);
}
}
感谢您的帮助。
答案 0 :(得分:0)
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行。