| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 635 人关注过本帖
标题:[讨论]如何选择合成还是继承?
只看楼主 加入收藏
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
 问题点数:0 回复次数:7 
[讨论]如何选择合成还是继承?
java里面代码的可重用性体现在两点:1.在新类里面创建旧类的对象(合成);2.继承旧类(继承)
什么时候应该选择合成,什么时候又该选择继承呢?
他们都能在新类里面利用旧类的特性,那么他们的具体区别又是什么?
搜索更多相关主题的帖子: 继承 选择 
2007-08-09 14:40
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
可以参考<Effective Java>的14条

My BlogClick Me
2007-08-09 15:00
袁小六
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-8-3
收藏
得分:0 

尽量用组合(也就是你说的合成)

只在需要用到向上转型的时候用继承


這個丗堺還钚夠瘋誑~~~
2007-08-09 15:07
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
什么时候必须用到向上转型呢?能给各例子吗?

I'm here, as always...
2007-08-09 15:15
袁小六
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-8-3
收藏
得分:0 
回复:(hwoarangzk)什么时候必须用到向上转型呢?能...

那我就举个例子吧

class people{
public void say(){
System.out.println(getClass().getSimpleName());
}

public static void toSay(people p){
p.say();
}
}

class chinease extends people{}
class american extends people{}
class english extends people{}

public class TestPeople{
public static void main (String[] args) {
people p;
p=new chinease();
p.say(); //普通的向上转型
people.toSay(p); //函数参数的向上转型
p=new american();
p.say();
people.toSay(p);
p=new english();
p.say();
people.toSay(p);
}
}

写的不好 不要见笑


這個丗堺還钚夠瘋誑~~~
2007-08-09 17:29
steven_yaoo
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-8-7
收藏
得分:0 
楼上的例子不错。 向上转型 会自动调用相应的方法。

尽量使用组合,如果你的程序中要用的向上转型的时候才考虑使用继承。

富家不用买良田,JAVA自有千锺粟; 安居不用架高楼,JAVA自有黄金屋; 娶妻莫恨无良媒,JAVA自有颜如玉;
2007-08-09 17:57
witchery
Rank: 1
来 自:西安
等 级:新手上路
帖 子:205
专家分:0
注 册:2005-8-6
收藏
得分:0 

向上传型可以实现多态, 而且能统一管理相关类..

2007-08-09 18:49
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
嗯,大概了解了,谢谢大家!

I'm here, as always...
2007-08-10 09:58
快速回复:[讨论]如何选择合成还是继承?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017424 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved