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

TheThinker1 2010-03-07 09:21:40
父类引用指向指向子类对象有啥作用呢?作何解释?
...全文
469 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixin327 2012-05-11
  • 打赏
  • 举报
回复
不错,一直纠结这个!
Dazzlingwinter 2010-03-08
  • 打赏
  • 举报
回复
这就是所谓的多态机制吧...


sky123123 2010-03-08
  • 打赏
  • 举报
回复
en xue xi yi xia le
cheung1987 2010-03-08
  • 打赏
  • 举报
回复
实现多态啊,一种服务多种接口,要知道现在写的代码被将来的代码调用没什么了不起,将来写的代码能被现在写的代码调用那就很牛了。
TheThinker1 2010-03-07
  • 打赏
  • 举报
回复
引用 1 楼 jxsfreedom 的回复:
做一个画图程序的时候,你可以画方,画圆,画线
按照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);
看出父类引用子类的好处了吗

明白了!多谢!
stu202060510 2010-03-07
  • 打赏
  • 举报
回复
例如:
你可能会写如下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);

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

wenzheng38 2010-03-07
  • 打赏
  • 举报
回复
这是多态思想里面的向下转型
kyousuke 2010-03-07
  • 打赏
  • 举报
回复
做一个画图程序的时候,你可以画方,画圆,画线
按照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);
看出父类引用子类的好处了吗

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧