在下面的代码:对象类型转换
A tat = new P();
P bat = (P) tat;
的类型转换tat
:P bat = (P) tat;
相同的话说:P tat = new P();
你能也说,在理论:P bat = (P tat = new P();)
在下面的代码:对象类型转换
A tat = new P();
P bat = (P) tat;
的类型转换tat
:P bat = (P) tat;
相同的话说:P tat = new P();
你能也说,在理论:P bat = (P tat = new P();)
的答案是肯定的,但P bat = (P tat = new P();)
是无效的Java代码,并不会合作mpile。
你将不得不使用两个语句来定义它们:
P bat, tat;
bat = tat = new P();
或者实际上它在同一行:'P bat,tat = bat = new P();' – 2014-10-01 01:44:04
在你的榜样,你需要记住的是,虽然tat
真是P
一个实例,它由A
定义的接口(假设P
扩展或实现A
,否则这将无法正常工作)。
接下来,bat
将引用tat
所指的同一对象,但它可通过P
定义的接口进行访问。
是的,对不起P在我的例子中扩展A. – 2014-10-01 01:53:48
除了'tat'将特别是'P'而不是大概更通用的'A'以外,它是一样的。 – 2014-10-01 01:41:49
在这两种情况下,'bat'都是'P'。你不需要沮丧地把'tat'分配给'bat'。 – 2014-10-01 01:56:03