黑马程序员技术交流社区
标题:
特别简单的类型转换的问题,求解释。
[打印本页]
作者:
Lin0411
时间:
2014-5-2 18:56
标题:
特别简单的类型转换的问题,求解释。
本帖最后由 Lin0411 于 2014-5-2 20:07 编辑
在学习毕老师关于多态问题的时候产生了一些疑问,例如下代码:
class A
{
public void show()
{
System.out.println("A");
}
}
class B extends A
{
public void show()
{
System.out.println("B");
}
}
public class Test
{
public static void main(String[] args)
{
A a1 = new B();
a1.show();
A a2 = (A)(new B());
a2.show();
}
}
为什么输出的是两个B,a2已经强制转换成了A类型,应该输出A才对呀,求大神指点。
作者:
谢振宣
时间:
2014-5-2 19:37
class A
{
public void show()
{
System.out.println("A");
}
}
class B extends A
{
public void show()
{
System.out.println("B");
}
}
public class Demo
{
public static void main(String[] args)
{
A a1 = new B();
a1.show();
A a2 = (A)(new B());//此处指向的对象依然是子类对象,同第一种创建方式没区别
a2.show();
A a3 = new A();//只有此时父类引用才会指向父类对象。此处不是多态。
a3.show();
}
}
//多态中,自始至终都是子类对象在做类型转换。
//只要是子类对象在做类型转换,就遵守多态的规则,执行被覆盖的非静态方法时参照子类的方法。
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2