看书时,谈到合成和继承的时候,书中说到这么一句话:如果想利用新类内部一个现有类的特征,而不想用它的接口,通常应选择合成。也就是说,我们课嵌入一个对象,使自己能用它实现新类的特征。我不是很理解,“想利用新类内部一个现有类的特征,而不想用它的接口”,这句话是什么意思啊
解决方案 »
- 这2个方法的用处
- myeclipse 按下 "." 没应该
- 使用JFrame表示完画面D后,按下Alt+Tab切换到其他画面,然后再切换回来时,画面D成为一片空白了
- 如何通过java代码对数据表的属性进行修改?
- Kosling每日问题之2004.03.19!望高手指点!-今天无问题,散分!
- MAC jdk1.8装好,但是java -version显示的还是jdk1.6
- 如何让java给图片上面写几个字
- jbuilder安装问题
- 如何确保applet在ie中正常显示。
- 这里斑竹水平真臭
- 如何用Java实现qq中的远程协助功能,可以看到对方桌面,可以控制对方鼠标(在允许的情况下)
- 对于泛型的问题?
/**
* ClassA有两个公用方法,也是通用意义上的接口。
*/
class ClassA { public void Method1() {
} public void Method2() {
}
}/**
* ClassB想使用Method1这个特性,但又不想有Method2.
*/
class ClassB {
private ClassA a = new ClassA();
public void Method1() {
a.Method1(); // 通过这种方式,ClassB就有了Method1这样的一个特性。由于ClassB没有声明Method2这个方法,所以B就没有了这个特性。
}
}
/**
* 而如果是使用继承的话,ClassC就自动具有了Method1和Method2两个方法。
*/
class ClassC extends ClassA{
}
比如水果有 color()方法(接口); size();
苹果是水果也需要这些接口, 所以要继承水果; 继承后就自动有了这些接口人 这个类 想吃“红”苹果, 不过人不是水果,不应该有color和size接口,但是要用到 苹果的color()的特性。人的eat() 方法中就调用了苹果的color() 。这样人与苹果就是组合关系,苹果和水果就是继承关系。eat()
{
if(apple.color == "red") goahead();
else return;
}
2 你包含、合成了一个类,你提供这个方法,但不是自己实现,而是调用你合成的那个类的对应方法
非常类似代理的模式老紫竹CSDN论坛插件发布-竹签V1.0