国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【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 }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜南县| 烟台市| 家居| 安达市| 岫岩| 响水县| 铜川市| 丹棱县| 仪陇县| 虹口区| 科尔| 西青区| 寻乌县| 阳谷县| 清水县| 正蓝旗| 吉木萨尔县| 手游| 城步| 新野县| 融水| 建阳市| 开远市| 长海县| 田林县| SHOW| 平乡县| 泰安市| 会理县| 青海省| 会东县| 金昌市| 汽车| 西吉县| 玛多县| 文成县| 米泉市| 双鸭山市| 海丰县| 固安县| 永修县|