亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

抽象類和方法

2019-11-18 12:07:50
字體:
來源:轉載
供稿:網友

  在我們所有樂器(Instrument)例子中,基礎類Instrument內的方法都肯定是“偽”方法。若去調用這些方法,就會出現錯誤。那是由于Instrument的意圖是為從它衍生出去的所有類都創建一個通用接口。
  
  之所以要建立這個通用接口,唯一的原因就是它能為不同的子類型作出不同的表示。它為我們建立了一種基本形式,使我們能定義在所有衍生類里“通用”的一些東西。為闡述這個觀念,另一個方法是把Instrument稱為“抽象基礎類”(簡稱“抽象類”)。若想通過該通用接口處理一系列類,就需要創建一個抽象類。對所有與基礎類聲明的簽名相符的衍生類方法,都可以通過動態綁定機制進行調用(然而,正如上一節指出的那樣,假如方法名與基礎類相同,但自變量或參數不同,就會出現過載現象,那或許并非我們所愿意的)。
  
  假如有一個象Instrument那樣的抽象類,那個類的對象幾乎肯定沒有什么意義。換言之,Instrument的作用僅僅是表達接口,而不是表達一些具體的實施細節。所以創建一個Instrument對象是沒有意義的,而且我們通常都應禁止用戶那樣做。為達到這個目的,可令Instrument內的所有方法都顯示出錯消息。但這樣做會延遲信息到運行期,并要求在用戶那一面進行徹底、可靠的測試。無論如何,最好的方法都是在編譯期間捕捉到問題。
  
  針對這個問題,java專門提供了一種機制,名為“抽象方法”。它屬于一種不完整的方法,只含有一個聲明,沒有方法主體。下面是抽象方法聲明時采用的語法:
  
  abstract void X();
  
  包含了抽象方法的一個類叫作“抽象類”。假如一個類里包含了一個或多個抽象方法,類就必須指定成abstract(抽象)。否則,編譯器會向我們報告一條出錯消息。
  
  若一個抽象類是不完整的,那么一旦有人試圖生成那個類的一個對象,編譯器又會采取什么行動呢?由于不能安全地為一個抽象類創建屬于它的對象,所以會從編譯器那里獲得一條出錯提示。通過這種方法,編譯器可保證抽象類的“純潔性”,我們不必擔心會誤用它。
  
  假如從一個抽象類繼續,而且想生成新類型的一個對象,就必須為基礎類中的所有抽象方法提供方法定義。假如不這樣做(完全可以選擇不做),則衍生類也會是抽象的,而且編譯器會強迫我們用abstract要害字標志那個類的“抽象”本質。
  
  即使不包括任何abstract方法,亦可將一個類聲明成“抽象類”。假如一個類沒必要擁有任何抽象方法,而且我們想禁止那個類的所有實例,這種能力就會顯得非常有用。
  
  Instrument類可很輕松地轉換成一個抽象類。只有其中一部分方法會變成抽象方法,因為使一個類抽象以后,并不會強迫我們將它的所有方法都同時變成抽象。下面是它看起來的樣子:
  
抽象類和方法

  下面是我們修改過的“管弦”樂器例子,其中采用了抽象類以及方法:
  
  //: Music4.java
  // Abstract classes and methods
  import java.util.*;
  
  abstract class Instrument4 {
   int i; // storage allocated for each
   public abstract void play();
   public String what() {
  return "Instrument4";
   }
   public abstract void adjust();
  }
  
  class Wind4 extends Instrument4 {
   public void play() {
  System.out.   }
   public String what() { return "Wind4"; }
   public void adjust() {}
  }
  
  class Percussion4 extends Instrument4 {
   public void play() {
  System.out.println("Percussion4.play()");
   }
   public String what() { return "Percussion4"; }
   public void adjust() {}
  }
  
  class Stringed4 extends Instrument4 {
   public void play() {
  System.out.println("Stringed4.play()");
   }
   public String what() { return "Stringed4"; }
   public void adjust() {}
  }
  
  class Brass4 extends Wind4 {
   public void play() {
  System.out.println("Brass4.play()");
   }
   public void adjust() {
  System.out.println("Brass4.adjust()");
   }
  }
  
  class Woodwind4 extends Wind4 {
   public void play() {
  System.out.println("Woodwind4.play()");
   }
   public String what() { return "Woodwind4"; }
  }
  
  public class Music4 {
   // Doesn't care about type, so new types
   // added to the system still work right:
   static void tune(Instrument4 i) {
  // ...
  i.play();
   }
   static void tuneAll(Instrument4[] e) {
  for(int i = 0; i < e.length; i++)
   tune(e[i]);
   }
   public static void main(String[] args) {
  Instrument4[] orchestra = new Instrument4[5];
  int i = 0;
  // Upcasting during addition to the array:
  orchestra[i++] = new Wind4();
  orchestra[i++] = new Percussion4();
  orchestra[i++] = new Stringed4();
  orchestra[i++] = new Brass4();
  orchestra[i++] = new Woodwind4();
  tuneAll(orchestra);
   }
  } ///:~
  
  可以看出,除基礎類以外,實際并沒有進行什么改變。
  
  創建抽象類和方法有時對我們非常有用,因為它們使一個類的抽象變成明顯的事實,可明確告訴用戶和編譯器自己打算如何用它。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩一区二区精品| 在线观看亚洲区| 欧美中文字幕精品| 欧美日韩中国免费专区在线看| 国产精品吹潮在线观看| 日韩在线视频中文字幕| 国产欧美精品一区二区| 国产午夜精品全部视频在线播放| 蜜臀久久99精品久久久无需会员| 久久久91精品国产| 国产精品尤物福利片在线观看| 国产亚洲精品一区二555| 欧美成人免费全部| 一本色道久久综合狠狠躁篇怎么玩| 有码中文亚洲精品| 欧美日韩在线免费| 播播国产欧美激情| 亚洲日韩中文字幕| 亲爱的老师9免费观看全集电视剧| 456亚洲影院| 美日韩在线视频| 日韩精品视频在线观看网址| 一本色道久久综合狠狠躁篇怎么玩| 国产亚洲欧美一区| 亚洲图中文字幕| 国内精品久久久久伊人av| www.色综合| 久久这里有精品| 日韩成人黄色av| 96国产粉嫩美女| 亚洲成年人在线播放| 亚洲欧美日韩中文视频| 91精品国产网站| 成人淫片在线看| 亚洲最新在线视频| 国产a级全部精品| 亚洲天堂av图片| 久久影视电视剧免费网站清宫辞电视| 欧美丰满少妇xxxxx做受| 亚洲性夜色噜噜噜7777| 亚洲美女动态图120秒| 成人免费淫片aa视频免费| 久久久亚洲精品视频| 日韩亚洲一区二区| 久久国产精品视频| 久久久久久久久久久免费精品| 18一19gay欧美视频网站| 国产精品∨欧美精品v日韩精品| 亚洲成人激情在线| 亚洲自拍偷拍第一页| 国产精品久久久久久久久久小说| 中文字幕少妇一区二区三区| 亚洲自拍偷拍第一页| 欧美性精品220| 亚洲老司机av| 午夜精品久久久久久久久久久久久| 亚洲天堂视频在线观看| 欧美激情综合色| 亚洲精品狠狠操| 欧美有码在线观看视频| 蜜臀久久99精品久久久久久宅男| 亚洲欧美中文日韩在线v日本| 国产精自产拍久久久久久蜜| 亚洲精品99久久久久| 91久久精品国产91性色| 91亚洲va在线va天堂va国| 亚洲第一视频在线观看| 国产欧美在线看| 色阁综合伊人av| 国产精品九九久久久久久久| 欧美日韩性视频在线| 91欧美日韩一区| 欧美一区二区三区免费视| 日本免费一区二区三区视频观看| 日韩中文字幕在线免费观看| 尤物九九久久国产精品的分类| 欧美精品videofree1080p| 国产成人欧美在线观看| 日本一区二区三区四区视频| 成人做爽爽免费视频| 欧美在线免费视频| 91欧美视频网站| 久久好看免费视频| 日韩视频在线免费观看| 社区色欧美激情 | 91国内揄拍国内精品对白| 欧美与黑人午夜性猛交久久久| 日本免费在线精品| 欧美精品激情blacked18| 在线观看日韩专区| 国产成人精品视频| 国产91在线播放精品91| 国产精品678| 欧美电影院免费观看| 久久久这里只有精品视频| 国产91露脸中文字幕在线| 欧美亚洲另类激情另类| 亚洲网在线观看| 欧美多人乱p欧美4p久久| 国产综合在线视频| 国产精品白嫩美女在线观看| 久久九九全国免费精品观看| 欧美性生交xxxxxdddd| 97在线看免费观看视频在线观看| 欧美激情视频网站| 成年无码av片在线| 国产精品三级久久久久久电影| 亚洲国产91精品在线观看| 国产一区二区在线免费| 懂色aⅴ精品一区二区三区蜜月| 中文字幕免费精品一区高清| 一区二区三区精品99久久| 狠狠躁夜夜躁久久躁别揉| 日韩av在线免费观看| 日本久久久久久| 欧美视频专区一二在线观看| 欧美影院久久久| 欧美肥臀大乳一区二区免费视频| 久久精品91久久久久久再现| 中文字幕亚洲欧美日韩2019| 欧美性做爰毛片| 精品亚洲国产成av人片传媒| 国产精品自拍偷拍视频| 中文字幕精品—区二区| 精品色蜜蜜精品视频在线观看| 亚洲欧洲成视频免费观看| zzjj国产精品一区二区| 国产丝袜一区视频在线观看| 韩国精品美女www爽爽爽视频| 91九色单男在线观看| 日韩极品精品视频免费观看| 日韩国产激情在线| 中日韩午夜理伦电影免费| 久久99久国产精品黄毛片入口| 国产精品青青在线观看爽香蕉| 国产在线观看精品一区二区三区| 国产精品免费电影| 日本精品久久中文字幕佐佐木| 日韩精品中文字| 欧美电影免费观看高清| 国产精品久久91| 欧美一级片在线播放| 国产日韩欧美视频在线| 亚洲直播在线一区| 国产日韩一区在线| 国产在线精品成人一区二区三区| 久久精品视频在线观看| 久久天天躁夜夜躁狠狠躁2022| 97在线视频观看| 91在线视频精品| 久久久久久久久久久网站| 亚洲天堂视频在线观看| 69**夜色精品国产69乱| 国产视频在线观看一区二区| 欧美久久精品午夜青青大伊人| 日本精品视频在线| 国产精品私拍pans大尺度在线| 欧美一级视频一区二区| 欧美精品免费在线观看| www.精品av.com| 欧美一区二区三区免费观看| 综合欧美国产视频二区| 国产成人精品日本亚洲专区61| 国产精品久久久久久久一区探花|