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

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

產生正確的行為

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


  知道java里綁定的所有方法都通過后期綁定具有多形性以后,就可以相應地編寫自己的代碼,令其與基礎類溝通。此時,所有的衍生類都保證能用相同的代碼正常地工作?;蛘邠Q用另一種方法,我們可以“將一條消息發給一個對象,讓對象自行判定要做什么事情。”
  
  在面向對象的程序設計中,有一個經典的“外形”例子。由于它很輕易用可視化的形式表現出來,所以經常都用它說明問題。但很不幸的是,它可能誤導初學者認為OOP只是為圖形化編程設計的,這種熟悉當然是錯誤的。
  
  外形例子有一個基礎類,名為Shape;另外還有大量衍生類型:Circle(圓形),Square(方形),Triangle(三角形)等等。大家之所以喜歡這個例子,因為很輕易理解“圓屬于外形的一種類型”等概念。下面這幅繼續圖向我們展示了它們的關系:
  
產生正確的行為

  上溯造型可用下面這個語句簡單地表現出來:
  
  Shape s = new Circle();
  
  在這里,我們創建了Circle對象,并將結果句柄立即賦給一個Shape。這表面看起來似乎屬于錯誤操作(將一種類型分配給另一個),但實際是完全可行的——因為按照繼續關系,Circle屬于Shape的一種。因此編譯器認可上述語句,不會向我們提示一條出錯消息。
  
  當我們調用其中一個基礎類方法時(已在衍生類里覆蓋):
  
  s.draw();
  
  同樣地,大家也許認為會調用Shape的draw(),因為這究竟是一個Shape句柄。那么編譯器怎樣才能知道該做其他任何事情呢?但此時實際調用的是Circle.draw(),因為后期綁定已經介入(多形性)。
  
  下面這個例子從一個稍微不同的角度說明了問題:
  
  //: Shapes.java
  // Polymorphism in Java
  
  class Shape {
   void draw() {}
   void erase() {}
  }
  
  class Circle extends Shape {
   void draw() {
  System.out.   }
   void erase() {
  System.out.println("Circle.erase()");
   }
  }
  
  class Square extends Shape {
   void draw() {
  System.out.println("Square.draw()");
   }
   void erase() {
  System.out.println("Square.erase()");
   }
  }
  
  class Triangle extends Shape {
   void draw() {
  System.out.println("Triangle.draw()");
   }
   void erase() {
  System.out.println("Triangle.erase()");
   }
  }
  
  public class Shapes {
   public static Shape randShape() {
  switch((int)(Math.random() * 3)) {
   default: // To quiet the compiler
   case 0: return new Circle();
   case 1: return new Square();
   case 2: return new Triangle();
  }
   }
   public static void main(String[] args) {
  Shape[] s = new Shape[9];
  // Fill up the array with shapes:
  for(int i = 0; i < s.length; i++)
   s[i] = randShape();
  // Make polymorphic method calls:
  for(int i = 0; i < s.length; i++)
   s[i].draw();
   }
  } ///:~
  
  針對從Shape衍生出來的所有東西,Shape建立了一個通用接口——也就是說,所有(幾何)外形都可以描繪和刪除。衍生類覆蓋了這些定義,為每種非凡類型的幾何外形都提供了獨一無二的行為。
  
  在主類Shapes里,包含了一個static方法,名為randShape()。它的作用是在每次調用它時為某個隨機選擇的Shape對象生成一個句柄。請注重上溯造型是在每個return語句里發生的。這個語句取得指向一個Circle,Square或者Triangle的句柄,并將其作為返回類型Shape發給方法。所以無論什么時候調用這個方法,就絕對沒機會了解它的具體類型到底是什么,因為肯定會獲得一個單純的Shape句柄。
  
  main()包含了Shape句柄的一個數組,其中的數據通過對randShape()的調用填入。在這個時候,我們知道自己擁有Shape,但不知除此之外任何具體的情況(編譯器同樣不知)。然而,當我們在這個數組里步進,并為每個元素調用draw()的時候,與各類型有關的正確行為會魔術般地發生,就象下面這個輸出示例展示的那樣:
  
  Circle.draw()
  Triangle.draw()
  Circle.draw()
  Circle.draw()
  Circle.draw()
  Square.draw()
  Triangle.draw()
  Square.draw()
  Square.draw()
  
  當然,由于幾何外形是每次隨機選擇的,所以每次運行都可能有不同的結果。之所以要突出外形的隨機選擇,是為了讓大家深刻體會這一點:為了在編譯的時候發出正確的調用,編譯器毋需獲得任何非凡的情報。對draw()的所有調用都是通過動態綁定進行的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人激情视频| 91久久精品一区| 日韩av成人在线观看| 久热99视频在线观看| 欧美日韩成人黄色| 深夜精品寂寞黄网站在线观看| 久久精品视频网站| 在线观看亚洲视频| 久久精品国产亚洲一区二区| 日韩电影网在线| 国产精品一久久香蕉国产线看观看| 国产精品久久久91| 亚洲第一男人天堂| 国产日产久久高清欧美一区| 欧美综合第一页| 九九久久久久久久久激情| 91免费国产网站| 中文字幕日本精品| 久久伊人精品视频| 国产精品亚洲美女av网站| 精品成人69xx.xyz| 日韩精品中文在线观看| 国产一区二区三区在线看| 亚洲专区在线视频| 日韩福利伦理影院免费| 国产精品久久97| 成人妇女淫片aaaa视频| 2018中文字幕一区二区三区| 国产一区二区丝袜| 中文字幕亚洲天堂| 国产精品久久久久久中文字| 国产美女精品视频免费观看| 91精品国产高清| 国产精品吹潮在线观看| 亚洲va久久久噜噜噜久久天堂| 国产精品一区二区电影| 伊人一区二区三区久久精品| 亚洲精品ady| 日韩av资源在线播放| 91久久精品国产91久久| 国产精品久久久久久久电影| 日韩亚洲成人av在线| 成人福利视频网| 九九热这里只有在线精品视| 亚洲精品电影网在线观看| 久久久久久一区二区三区| 国产91精品视频在线观看| 精品国内产的精品视频在线观看| 欧美孕妇毛茸茸xxxx| 亚洲第一区第一页| 91精品国产九九九久久久亚洲| 久久这里有精品| 亚洲2020天天堂在线观看| 中文字幕亚洲无线码在线一区| 超碰精品一区二区三区乱码| 北条麻妃久久精品| 欧美极品xxxx| 欧美综合第一页| 国产欧美日韩中文| 国产精品美女视频网站| 亚洲国产另类 国产精品国产免费| 日韩电影在线观看中文字幕| 亚洲国内精品视频| 国产精品美女久久久免费| 成人免费淫片视频软件| 国产在线观看一区二区三区| 国产一区二区三区丝袜| 亚洲国产欧美自拍| 亚洲日本成人女熟在线观看| 亚洲国产日韩精品在线| 欧美一级视频一区二区| 色一区av在线| 久久久成人精品| 国产情人节一区| 欧美激情国内偷拍| 欧美国产日韩一区二区在线观看| 久久久久久久国产精品视频| 欧美美女操人视频| 日韩精品在线观看视频| 68精品国产免费久久久久久婷婷| 亚洲成人av片在线观看| 一区二区三区 在线观看视| 国产日韩换脸av一区在线观看| 欧美激情免费在线| 国产91|九色| 国产福利精品视频| 久久久这里只有精品视频| 国产成人精品久久亚洲高清不卡| 日韩av最新在线| 欧美刺激性大交免费视频| 午夜精品免费视频| 日韩免费观看视频| 69视频在线播放| 欧美精品久久一区二区| 精品香蕉在线观看视频一| 亚洲国产精品字幕| 久久躁狠狠躁夜夜爽| 亚洲国产精品va在线观看黑人| 亚洲国产天堂久久国产91| 国产日本欧美视频| 午夜精品国产精品大乳美女| 午夜精品视频在线| 日韩免费看的电影电视剧大全| 亚洲国产成人91精品| 欧美乱人伦中文字幕在线| 91精品国产综合久久香蕉的用户体验| 国产精品jvid在线观看蜜臀| 国产在线观看一区二区三区| 久久精品国产精品| 日韩亚洲欧美中文高清在线| 日韩亚洲精品视频| 精品国产精品自拍| 欧美性做爰毛片| 亚洲成人网在线观看| 日韩欧美国产黄色| 九九综合九九综合| 久久99亚洲热视| 日本一区二区在线免费播放| 久久成人免费视频| 久久久噜久噜久久综合| 九九热精品视频国产| 亚洲视频axxx| 日韩在线资源网| 国产成人亚洲综合| 成人av在线网址| 亚洲视频欧洲视频| 在线看福利67194| 正在播放欧美视频| 欧美成人精品在线视频| 精品久久久久久久久久国产| 成人h视频在线| 97视频在线看| 欧美高清videos高潮hd| 91精品国产91久久久| 亚洲一区二区在线播放| 91sa在线看| 日韩视频在线观看免费| 九九九久久国产免费| 亚洲一区www| 另类色图亚洲色图| 国产精品∨欧美精品v日韩精品| 国产精品亚洲一区二区三区| 亚洲欧美色婷婷| 亚洲色图激情小说| 国产精品成人品| 日韩av在线影院| 久久视频这里只有精品| 日韩高清免费观看| 国产97人人超碰caoprom| 精品成人国产在线观看男人呻吟| 亚洲国内高清视频| 成人xvideos免费视频| 日韩av免费在线看| 高清欧美性猛交xxxx| 亚洲激情免费观看| 欧美午夜视频一区二区| 91精品视频免费看| 欧美尤物巨大精品爽| 国产日本欧美一区二区三区| 亚洲性xxxx| 久久综合九色九九| 神马久久桃色视频| 国产婷婷色综合av蜜臀av| 欧美国产中文字幕|