2014-10-01 125 views
1

在下面的代码:对象类型转换

A tat = new P(); 

P bat = (P) tat; 

的类型转换tatP bat = (P) tat;

相同的话说:P tat = new P();

你能也说,在理论:P bat = (P tat = new P();)

+0

除了'tat'将特别是'P'而不是大概更通用的'A'以外,它是一样的。 – 2014-10-01 01:41:49

+0

在这两种情况下,'bat'都是'P'。你不需要沮丧地把'tat'分配给'bat'。 – 2014-10-01 01:56:03

回答

1

的答案是肯定的,但P bat = (P tat = new P();)是无效的Java代码,并不会合作mpile。

你将不得不使用两个语句来定义它们:

P bat, tat; 
bat = tat = new P(); 
+0

或者实际上它在同一行:'P bat,tat = bat = new P();' – 2014-10-01 01:44:04

0

在你的榜样,你需要记住的是,虽然tat真是P一个实例,它由A定义的接口(假设P扩展或实现A,否则这将无法正常工作)。

接下来,bat将引用tat所指的同一对象,但它可通过P定义的接口进行访问。

+0

是的,对不起P在我的例子中扩展A. – 2014-10-01 01:53:48

相关问题