在以下代码中:
A tat = new P();
P bat = (P) tat;
是类型转换tat
:P bat = (P) tat;
与说:P tat = new P();
你能否在理论上说:P bat = ( P tat = new P(); )
答案 0 :(得分:1)
答案是肯定的,但P bat = ( P tat = new P(); )
不是有效的Java代码,不会编译。
您必须使用两个语句来定义它们:
P bat, tat;
bat = tat = new P();
答案 1 :(得分:0)
在您的示例中,您需要记住,虽然tat
实际上是P
的实例,但它具有A
定义的接口(假设P
扩展或实现A
,否则这不会起作用。
在此之后,bat
将引用tat
引用的同一对象,但是可以通过P
定义的界面访问它。