java 对象转换问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 14:45:23
父类Animal,它有一个子类Dog. 并且Animal a = new Dog();那么:

1. Dog d = a; ....让d指向new Dog()
2. Dog d = Dog(a); ....还是让d指向new Dog()

1式在语法上正确吗? 为什么让d指向new Dog()的时候还要转换a的类型?

你定义了一个Dog类,但是用它的父类的引用变量来定义的。
也就是说变量a是父类Animal的对象。
那么你的变量d是Dog类的对象,a是Animal的对象,当然要强制成Dog类的对象。
用通俗的话跟你讲:
a是动物,d是狗,Dog d=Dog(a),意思就是把a这种动物赋予狗的属性,这样a才是具体化狗这种动物。

2式应该是 Dog d = (Dog)a; 吧!~