首页 > 学院 > 开发设计 > 正文

【Thinking in Java】组合、继承和代理的区别

2019-11-14 23:46:58
字体:
来源:转载
供稿:网友
【Thinking in java】组合、继承和代理的区别
  1. 三者的定义:
    1. 组合:在新类中new 另外一个类的对象,以添加该对象的特性。
    2. 继承:从基类继承得到子类,获得基类的特性。
    3. 代理:在代理类中创建某功能的类,调用类的一些方法以获得该类的部分特性。
  1. 使用场合:
  • 组合:各部件之间没什么关系,只需要组合即可。like组装电脑,需要new CPU(),new RAM(),new Disk()……

  演示代码如下:

  

 1 public class Computer { 2     public Computer() { 3         CPU cpu=new CPU(); 4         RAM ram=new RAM(); 5         Disk disk=new Disk(); 6     } 7 } 8 class CPU{    } 9 class RAM{    }10 class Disk{    }

  • 继承:子类需要具有父类的功能,各子类之间有所差异。like Shape类作为基类,子类有Rectangle,CirCle,Triangle……代码不写了,大家都经常用。
  • 代理:飞机控制类,我不想暴露太多飞机控制的功能,只需部分前进左右转的控制(而不需要暴露发射导弹功能)。通过在代理类中new一个飞机控制对象,然后在方法中添加飞机控制类的各个需要暴露的功能。

  演示代码如下:

 1 public class PlaneDelegation{     2     PRivate PlaneControl planeControl;    //private外部不可访问 3     /* 4      * 飞行员权限代理类,普通飞行员不可以开火 5      */ 6     PlaneDelegation(){ 7         planeControl=new PlaneControl(); 8     } 9     public void speed(){10         planeControl.speed();11     }12     public void left(){13         planeControl.left();14     }15     public void right(){16         planeControl.right();17     }18 }19 20 final class PlaneControl {//final表示不可继承,控制器都能继承那还得了。。21     protected void speed() {}22     protected void fire() {}23     protected void left() {}24     protected void right() {}25 }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表