歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java編程:組合、繼承和代理的區別

組合、繼承和代理三者的定義:

  1. 組合:在新類中new 另外一個類的對象,以添加該對象的特性。
  2. 繼承:從基類繼承得到子類,獲得基類的特性。
  3. 代理:在代理類中創建某功能的類,調用類的一些方法以獲得該類的部分特性。
  1. 使用場合:
  • 組合:各部件之間沒什麼關系,只需要組合即可。like組裝電腦,需要new CPU(),new RAM(),new Disk()……

  演示代碼如下:

 public class Computer {
    public Computer() {
        CPU cpu=new CPU();
        RAM ram=new RAM();
        Disk disk=new Disk();
    }
}
class CPU{    }
class RAM{    }
class Disk{    }

繼承:子類需要具有父類的功能,各子類之間有所差異。like Shape類作為基類,子類有Rectangle,CirCle,Triangle……代碼不寫了,大家都經常用。

  • 代理:飛機控制類,我不想暴露太多飛機控制的功能,只需部分前進左右轉的控制(而不需要暴露發射導彈功能)。通過在代理類中new一個飛機控制對象,然後在方法中添加飛機控制類的各個需要暴露的功能。

  演示代碼如下:

 

public class PlaneDelegation{   
    private PlaneControl planeControl;    //private外部不可訪問
    /*
    * 飛行員權限代理類,普通飛行員不可以開火
    */
    PlaneDelegation(){
        planeControl=new PlaneControl();
    }
    public void speed(){
        planeControl.speed();
    }
    public void left(){
        planeControl.left();
    }
    public void right(){
        planeControl.right();
    }
}

final class PlaneControl {//final表示不可繼承,控制器都能繼承那還得了。。
    protected void speed() {}
    protected void fire() {}
    protected void left() {}
    protected void right() {}

Copyright © Linux教程網 All Rights Reserved