疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java组合、继承和代理的区别


 

   

  三者的定义:

  组合:在新类中new 另外一个类的对象,以添加该对象的特性。

  继承:从基类继承得到子类,获得基类的特性。

  代理:在代理类中创建某功能的类,调用类的一些方法以获得该类的部分特性。

  使用场合:

  组合:各部件之间没什么关系,只需要组合即可。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 }