我觉得第一种是多态的体现,但多态的前提是 子类的方法存在重写,不知道你的程序这个能不能满足。如果可以那么, 第一种:Animal a=new Dog() 第一种是多态的体现。Animal的引用指向了自己的子类Dog对象. a 拥有了Animal的属性特征,实现多态。 第二种 Dog d=(Dog)a。 第二种 是向下转型,目的,为了调用子类非继承父类、自己特有的方法。因为多态有个弊端,只能使用父类的引用访问父类的成员。所以向下转型是为了访问子类自己的成员。首先,Dog 引用指向的实例对象本来就是子类类型的。所以赋值给子类类型引用变量非常可以。
然后现在用子类类型的引用就可以访问自己的成员方法了。 |