黑马程序员技术交流社区
标题:
装饰类和被装饰的类为什么通常都是继承至同一个类?
[打印本页]
作者:
win_rainbow
时间:
2015-5-31 13:03
标题:
装饰类和被装饰的类为什么通常都是继承至同一个类?
例如,BufferedReader类可以用来装饰FileReader类,这两个类都是继承的Reader类。FileReader 类对象是BufferedReader类的属性,但是为什么这两个类都要继承至Reader类呢?BufferedReader类就算不继承Reader类,不也可以实现装饰功能么?
作者:
edithe
时间:
2015-5-31 16:35
本帖最后由 edithe 于 2015-5-31 16:39 编辑
装饰类,我认为是相互叠加的过程,箱子外再套箱子,两个装饰类本来都是独立的类,但是因为要叠加,所以必须让彼此产生关系,即调用彼此的对象,所以在内部维护一个对象,但是不能明确指向实体(因为装饰类有很多),但是内部维护的对象却要可以指向任何一个装饰类,这就可以利用多态了(父类引用对象指向子类对象实体),所以必须继承某类或者实现接口
如果不继承或者实现接口,那么多个装饰类相叠加的时候就麻烦多了,这有悖面向对象的思想吧
描述不是很清楚,下面附上简单代码,以便理解
interface Work{
public void job();
}
class Child implements Work{
Work work;
public void job(){
System.out.println("画画");
}
}
class Mother implements Work{
Work work;
public Mother(Work work){
this.work=work;
}
public void job(){
work.job();
System.out.println("上色");
}
}
class Father implements Work{
Work work;
public Father(Work work){
this.work=work;
}
public void job(){
work.job();
System.out.println("装裱");
}
}
复制代码
作者:
win_rainbow
时间:
2015-6-4 22:01
赞!!!
作者:
win_rainbow
时间:
2015-6-4 22:02
edithe 发表于 2015-5-31 16:35
装饰类,我认为是相互叠加的过程,箱子外再套箱子,两个装饰类本来都是独立的类,但是因为要叠加,所以必须 ...
赞!!!
作者:
win_rainbow
时间:
2015-6-6 15:15
file:///C:/Users/Administrator/Desktop/test1.JPG
作者:
fenglinluomu
时间:
2015-6-6 16:26
装饰一个类,我肯定得知道这个类里有哪些方法呀。那么多方法一个个去写实在太傻,直接拿到被装饰类的父类或者接口就知道它有哪些方法。 当然,少部分代码还是要自己实现。
作者:
ZYZQ
时间:
2015-6-7 00:00
会AA会BB会CC会DD的XXX,大概这个意图吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2