麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

為什么要上溯造型

2019-11-18 13:21:25
字體:
來源:轉載
供稿:網友

  這個程序看起來也許顯得有些希奇。為什么所有人都應該有意忘記一個對象的類型呢?進行上溯造型時,就可能產生這方面的迷惑。而且假如讓tune()簡單地取得一個Wind句柄,將其作為自己的自變量使用,似乎會更加簡單、直觀得多。但要注重:假如那樣做,就需為系統內Instrument的每種類型寫一個全新的tune()。假設按照前面的推論,加入Stringed(弦樂)和Brass(銅管)這兩種Instrument(樂器):
  
  //: Music2.java
  // Overloading instead of upcasting
  
  class Note2 {
   PRivate int value;
   private Note2(int val) { value = val; }
   public static final Note2
    middleC = new Note2(0),
    cSharp = new Note2(1),
    cFlat = new Note2(2);
  } // Etc.
  
  class Instrument2 {
   public void play(Note2 n) {
    System.out.println("Instrument2.play()");
   }
  }
  
  class Wind2 extends Instrument2 {
   public void play(Note2 n) {
    System.out.println("Wind2.play()");
   }
  }
  
  class Stringed2 extends Instrument2 {
   public void play(Note2 n) {
    System.out.println("Stringed2.play()");
   }
  }
  
  class Brass2 extends Instrument2 {
   public void play(Note2 n) {
    System.out.println("Brass2.play()");
   }
  }
  
  public class Music2 {
   public static void tune(Wind2 i) {
    i.play(Note2.middleC);
   }
   public static void tune(Stringed2 i) {
    i.play(Note2.middleC);
   }
   public static void tune(Brass2 i) {
    i.play(Note2.middleC);
   }
   public static void main(String[] args) {
    Wind2 flute = new Wind2();
    Stringed2 violin = new Stringed2();
    Brass2 frenchHorn = new Brass2();
    tune(flute); // No upcasting
    tune(violin);
    tune(frenchHorn);
   }
  } ///:~
  
  這樣做當然行得通,但卻存在一個極大的弊端:必須為每種新增的Instrument2類編寫與類緊密相關的方法。這意味著第一次就要求多得多的編程量。以后,假如想添加一個象tune()那樣的新方法或者為Instrument添加一個新類型,仍然需要進行大量編碼工作。此外,即使忘記對自己的某個方法進行過載設置,編譯器也不會提示任何錯誤。這樣一來,類型的整個操作過程就顯得極難治理,有失控的危險。
  
  但假如只寫一個方法,將基礎類作為自變量或參數使用,而不是使用那些特定的衍生類,豈不是會簡單得多?也就是說,假如我們能不顧衍生類,只讓自己的代碼與基礎類打交道,那么省下的工作量將是難以估計的。
  
  這正是“多形性”大顯身手的地方。然而,大多數程序員(非凡是有程序化編程背景的)對于多形性的工作原理仍然顯得有些生疏。

上一篇:名字的隱藏

下一篇:final的注意事項

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九九热欧美 | 91精品国产综合久久久欧美 | 国产91丝袜在线熟 | 国产papa| 亚洲一区成人在线 | 欧美成人一区二区三区电影 | 国产一区二区三区视频在线观看 | 亚洲精品有限 | 精品久久一区二区三区 | 欧美巨根 | 911精品影院在线观看 | 九草网 | 蝌蚪久久窝 | 精品国产一区二区三区成人影院 | 激情97 | 日本羞羞影院 | 羞羞的视频在线观看 | 久久人添人人爽人人爽人人片av | 在线a毛片| 美女黄色毛片免费看 | 最新欧美精品一区二区三区 | 特级毛片a级毛片100免费 | 国产精品午夜一区 | 毛片在线免费播放 | 久久亚洲线观看视频 | 毛片小网站 | 黑人一级片视频 | 国产69精品久久99不卡免费版 | 欧美偷拍一区二区 | 国产三级三级三级三级 | 国产精品成人免费一区久久羞羞 | 91精品国产综合久久久欧美 | 国产免费激情视频 | 毛片在线免费播放 | 国产精品久久久久久久久岛 | 免费观看一级黄色片 | 九九热免费观看 | 久草视频国产在线 | 一区二区国产在线 | 午夜小视频免费观看 | 欧美成人免费电影 |