歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java編程:組合、繼承和代理的區別

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

日期:2017/3/1 9:30:02   编辑:Linux編程

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

  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