日期:2014-05-20  浏览次数:20747 次

父类引用指向指向子类对象有啥作用呢?作何解释?
父类引用指向指向子类对象有啥作用呢?作何解释?

------解决方案--------------------
做一个画图程序的时候,你可以画方,画圆,画线
按照OOP的思想方,圆,线都属于Shape类型
那么应该有
class Shape{}
class Fang extends Shape{}
class Yuan extends Shape{}
class Xian extends Shape{}

然后把他们画出来的操作方法在某个类里,这个方法接收一个图形,我不管你是什么实际的形状,你只要给我一个图形,我就可以把它画出来,看这个方法的定义
public void draw();那里面的参数应该怎么给,参数定义Fang f还是Yuan y或是Xian x,不管你定义成什么都只能接收一个实际的形状,如果你的参数定义成Shape s,那么就可以接受继承Shape的所有实际形状
public void draw(Shape s);
看出父类引用子类的好处了吗
------解决方案--------------------
例如:
你可能会写如下2个方法
feed(Cat cat){ }
feed(Dog dog){ }
如果Cat、Dog都是Animal的子类,那你就可以写成
feed(Animal animal){ }

Animal a1=new Dog(); //父类引用指向子类对象
Animal a2=new Cat();
feed(a1);
feed(a2);

有人说这是面向接口编程,可以降低程序的耦合性,即调用者不必关心调用的是哪个对象,只需要针对接口编程就可以了,被调用者对于调用者是完全透明的。让你更关注父类能做什么,而不去关心子类是具体怎么做的,你可以随时替换一个子类,也就是随时替换一个具体实现,而不用修改其他.


------解决方案--------------------
实现多态啊,一种服务多种接口,要知道现在写的代码被将来的代码调用没什么了不起,将来写的代码能被现在写的代码调用那就很牛了。
------解决方案--------------------
这就是所谓的多态机制吧...