纯感谢Java大侠帖~~~~~~~大侠顺便看看我理解的多态对不对~

zsmg888 2009-09-23 10:29:02
本人快奔三的人了,为了混口饭吃,开始啃起了J2SE,由于初学,很多东西不明白,别说看书,就是看教学视频也不是很清楚.这一个星期一直在看类,构造方法,继承,覆盖,重载,多态.尤其是多态搞了好几天,今天中午跑去书店又查了半天资料,终于让我明白了.

本来早上就发了一贴请教多态问题,回来一看,27人回贴,还没看回贴就感觉到心里暖暖的.感谢各位帮助过我,和即将帮助我的各位大侠,我在这里祝大家十一愉快了~~~~~~~~~


顺便我来阐述一下我认为的多态的意思,大侠们看看我说的对不对.

(1) 需要子类继承父类.
(2) 需要子类至少有一种方法和父类的一样.而且子类覆盖了这个父类的方法.
(3) 比如说 Car 类有个 a1 方法.
Bmw 类也有 a1 方法.
Car t = new BMW();
t.a1()
//虽然我是调用的父类Car的a1方法,但是实际上子类Bmw的a1方法已经把父类的a1()覆盖了,也就是说,
实际上我是调的Bmw的a1方法,这就叫多态.


这样很灵活,我Car不用重新写,如果有和Benz的子类,那我直接 Car t = new Benz();我的Car类就变成Benz了.是这样吗?
...全文
112 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbro001 2009-09-24
  • 打赏
  • 举报
回复
另外,强制类型转换前,通常做一个检查比较好:
if (t instanceof Bmw)
Bmw m = (Bmw)t;
这个例子中t和Bmw的关系比较明显,可能不是很有必要做这个检查,但有些复杂情况下还是很有必要的

最后,楼主请注意结贴~谢谢=)
bigbro001 2009-09-24
  • 打赏
  • 举报
回复
用Car t = new Bmw();而不直接Bmw m = Bmw ();主要是要利用多态的带来的好处
举个例子,有如下代码:
Car t = new Bmw();
Car s = new Toyota();
void method(Car car){car.a1;}
这时候,利用多态,t和s都可以作为参数传给method方法,然后在method内部去调用各自的a1方法
如果没有多态:
Bmw t = new Bmw();
Toyota s = new Toyota();
那么这时候,就无法写一个像上面那样的方法来统一调用不同子类的Car的a1方法

[Quote=引用 3 楼 zsmg888 的回复:]
本人还有个地方不理解,就是强制类型转换.
Car t = new Bmw();
Bmw m = (Bmw)t;
这句话的意思我理解,就是用 m.方法 m.属性 调子类Bmw的属性和方法了.
我的意思是直接 Bmw m = Bmw ();这样不是更直观,更简单吗?为什么非要弄成强制类型转换这么麻烦呢?
[/Quote]
kingwood2005 2009-09-24
  • 打赏
  • 举报
回复
5楼说的很形象!!
最近在看 Java核心技术I,蛮有收获的!
zilong4460072 2009-09-24
  • 打赏
  • 举报
回复
dingf le
windforcecn 2009-09-23
  • 打赏
  • 举报
回复
初学java还是建议先找本薄的面向对象程序设计的书翻翻
my_caterpillar 2009-09-23
  • 打赏
  • 举报
回复
5楼的哥们说的很形象,差不多就是这样了!
hyhymn 2009-09-23
  • 打赏
  • 举报
回复
加油,兄弟。
warrior30 2009-09-23
  • 打赏
  • 举报
回复
举个例子:
一个停车场只能停车,但看门的大爷不知道宝马也是车,只认识普通车。但你说是车就让你开进去。所以你就要开着你的宝马并包装一下,告诉他这是车,Car t = new Bmw(); 好的你可以进去了。

但进去之后你要炫耀,要告诉里面的人这不仅仅是车还是宝马,所以要把刚才伪装成普通车样子的宝马强制变回来。 Bmw m = (Bmw)t;
岁月之梦 2009-09-23
  • 打赏
  • 举报
回复
是j2se 还是 j2ee !看你应该学的是后者,支持你!明天会更好的!
zsmg888 2009-09-23
  • 打赏
  • 举报
回复

本人还有个地方不理解,就是强制类型转换.
Car t = new Bmw();
Bmw m = (Bmw)t;
这句话的意思我理解,就是用 m.方法 m.属性 调子类Bmw的属性和方法了.
我的意思是直接 Bmw m = Bmw ();这样不是更直观,更简单吗?为什么非要弄成强制类型转换这么麻烦呢?
amdgaming 2009-09-23
  • 打赏
  • 举报
回复
后面的路还长啊,兄弟。
warrior30 2009-09-23
  • 打赏
  • 举报
回复
楼主理解的很正确!学习了。
很多东西直接往后学,做的多了,前面的知识也就更理解了。

62,620

社区成员

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

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