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

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

面向對象思想之--理解類和對象

2019-11-18 11:17:57
字體:
來源:轉載
供稿:網友

  上一次在"使用java開始面向對象的編程"這篇文章中,我們學習了一個編程語言要真正成為面向對象的,它應該支持信息隱藏/封裝,多態,繼續和動態綁定.另外,我們知道了Java完全支持這些功能,而且知道了因為Java是一種解釋性的語言并運行在虛擬機的內部,所以由Java寫成的任何程序都可以在任何支持 Java虛擬機(JVM)的操作系統上運行.我們還明白了對象是代表現實生活中事物的軟件-編程模型以及對象是由它們的狀態和行為定義的.最后,我們知道了Java中除了原始數據對象以外一切都是對象.
  
  因為這種程序設計風格中的這許多內容都和對象以及類有關,我們將在下面進一步的考察它們.
  
  對象詳論
  使用對象的一個要害是當你在瀏覽系統分析文檔或者設計文檔的時候如何來確定它們.因為對象一般代表人,地方或者事物,所以一個確定對象的基本的方法就是找出句子中所使用的名詞.這里有一個簡單的例子.在句子"一個顧客可以擁有多于一個的銀行帳號",我們就確定了兩個對象,客戶和帳號.在句子"小貓喵喵叫"中,我們能夠確定一個對象,貓.
  
  類詳論
  前面,我們學習了一個類是定義了對象如何動作以及當對象創建或者說實例化的時候應該包含些什么的實體.在對動物的討論中,我們可以說,"狗兒汪汪叫,貓喵喵叫,鴨子嘎嘎叫."確定句子中的對象我們就得到了狗,貓和鴨子.至于汪汪叫,喵喵叫,嘎嘎叫,那都是我們對象發出的行為動作.
  
  要實現這些對象,我們需要創建三個對象分別叫Dog,Cat和DUCk.要實現它們的行為,我們可以為每一個這些對象創建代表每個對象發出的聲音的方法,而且我們把這個方法叫做speak或者,假如我們發揮想象力的話還可以把這個方法叫做sayHello.
  
  在程序的上下文中為了演示這些概念,讓我們修改上篇文章中的HelloWorld程序,添加這三個新對象并給它們中的每一個添加sayHello方法,如下所示:
  
  public class HelloWorld
  {
    public static void main(String[] args)
    {
      Dog animal1 = new Dog();
      Cat animal2 = new Cat();
      Duck animal3 = new Duck();
      animal1.sayHello();
      animal2.sayHello();
      animal3.sayHello();
    }
  }
  
  class Dog
  {
    public void sayHello()
    {
      System.out.    }
  }
  
  class Cat
  {
    public void sayHello()
    {
      System.out.println("Meow");
    }
  }
  
  class Duck
  {
    public void sayHello()
    {
      System.out.println("Quack");
    }
  }
  
  在編譯并運行了這個程序以后,輸出應該如下:
  Bark
  Meow
  Quack
  
  看看我們的程序,我們馬上就注重到了一些事情:每個對象代表了一種動物,而每個對象實現了一個相同的方法,sayHello.假設我們想要給對象更多的功能以及用來代表對象所指的動物的方法和屬性.比方說,我們可以添加一個方法來確定一個動物是不是哺乳類的,或者我們添加一個方法來確定一個動物是不是肉食性的.我們可以通過給每一個對象添加這兩種方法來實現或者我們也能夠使用OOP的兩個最強大的功能:繼續和多態.
  
  因為所有的對象都代表一個對象,所以我們將創建一個被稱為"基類"或是"超類"的類,它的名字是Animal.我們然后可以讓我們的對象從Animal類繼續相同的特點并強制每個對象只實現與Animal類不同的功能.
  
  Java用extends要害字指明一個類從另一個繼續.讓我們利用繼續和多態的概念獲得代碼重用的好處來重建我們的程序并使得每個對象只實現與基類Animal不同的功能:
  
  public class HelloWorld
  {
    public static void main(String[] args)
    {
      Dog animal1 = new Dog();
      Cat animal2 = new Cat();
      Duck animal3 = new Duck();
      System.out.println("A dog says " +animal1.getHello()
      +", is carnivorous: " +animal1.isCarnivorous()
      +", is a mammal: " +animal1.isAMammal());
  
      System.out.println("A cat says " +animal2.getHello()
      +", is carnivorous: " +animal2.isCarnivorous()
      +", is a mammal: " +animal2.isAMammal());
  
      System.out.println("A duck says " +animal3.getHello()
      +", is carnivorous: " +animal3.isCarnivorous()
      +", is a mammal: " +animal3.isAMammal());
    }
  }
  
  abstract class Animal
  {
    public boolean isAMammal()
    {
      return(true);
    }
  
    public boolean isCarnivorous()
    {
      return(true);
    }
  
    abstract public String getHello();
  }
  
  class Dog extends Animal
  {
    public String getHello()
    {
      return("Bark");
    }
  }
  
  class Cat extends Animal
  {
    public String getHello()
    {
      return("Meow");
    }
  }
  
  class Duck extends Animal
  {
    public boolean isAMammal()
    {
      return(false);
    }
  
    public boolean isCarnivorous()
    {
      return(false);
    }
  
    public String getHello()
    {
      return("Quack");
    }
  }
  
  在編譯并運行我們的程序以后,輸出應該如下:
  A dog says Bark, is carnivorous: true, is a mammal: true
  A cat says Meow, is carnivorous: true, is a mammal: true
  A duck says Quack, is carnivorous: false, is a mammal: false
  
  看看我們的例子,你將發現我們定義了一個叫做Animal的新類,它定義了三個方法:isAMammal, isCarnivorous, 和 getHello.你一概還注重到了,我們在每個現存的類申明的前面都添加了extends Animal這個語句.這個語句告訴編譯器這些對象是Animal類的子類.
  
  因為方法isAMammal 和 isCarnivorous 都返回 true,所以Dog和Cat類用不著重新實現--即"重載"這兩個方法.但是鴨子既不是哺乳動物又不是肉食性的,所以Duck類需要重載這兩種方法來返回正確的值.我們所有的對象都以自己獨特的方式說"hello",所以它們都需要重載getHello方法.因為每種動物說"hello"的方式都不同,所以我們在基類中將getHello方法申明為抽象的,而且我們沒有給這個方法一個函數體.這就迫使Animal的每一個子類重載getHello方法并根據每一個特定動物的需要來定義它.
  
  因為我們將getHello方法申明為虛擬的,我們就不能直接實例化Animal對象.因此,我們需要將Animal類也申明為抽象的.我們通過在Animal類定義的開始行添加abstract要害字來實現這一點.子類重載它們基類的方法的能力就是多態.多態使得子類能夠使用基類的方法或是在這些方法不足的時候重載它們.這就實現了代碼重用,加快了代碼的實現過程,而且它還隔離和程序中的bug,使得程序的維護更輕易.
  
  總結
  在本文中,我們學習了如何確定潛在的對象.我們還學習了如何使用繼續和多態來加快我們的代碼實現過程并隔離錯誤,這使得代碼的維護過程更加輕易.下一次,我們將展開討論多態和繼續的概念并開始我們對動態綁定的討論.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品久久久久| 久99久在线视频| 欧美日本国产在线| 欧美极品第一页| 国产精品亚洲欧美导航| 久久夜色精品亚洲噜噜国产mv| 国产精品中文字幕久久久| 日本亚洲欧美三级| 91深夜福利视频| 日韩电影中文字幕在线| 亚洲精品欧美日韩专区| 97视频在线观看亚洲| 国产一区视频在线| 国内伊人久久久久久网站视频| 国产精品久久久久久久久久免费| 国产精品午夜国产小视频| 中文欧美日本在线资源| 欧美精品18videosex性欧美| 欧美中文字幕在线视频| 欧美电影在线免费观看网站| 麻豆一区二区在线观看| 欧美老少做受xxxx高潮| 97精品国产91久久久久久| 亚洲黄一区二区| 亚洲网站视频福利| 久久亚洲精品中文字幕冲田杏梨| 69国产精品成人在线播放| 久久久久久亚洲精品不卡| 国产精品一区电影| 欧美一区二粉嫩精品国产一线天| 久久久精品视频在线观看| 人人做人人澡人人爽欧美| 久久免费精品视频| 夜夜嗨av一区二区三区四区| 亚洲图片欧洲图片av| 欧美做受高潮电影o| 日本高清视频精品| 超碰97人人做人人爱少妇| 亚洲欧美成人一区二区在线电影| 成人观看高清在线观看免费| 在线播放日韩精品| 91在线观看免费观看| 中文字幕亚洲一区| 欧美高清性猛交| 欧美激情网站在线观看| 久99久在线视频| 在线观看不卡av| 亚洲第一男人天堂| 亚洲国产欧美一区二区三区久久| 日韩亚洲欧美中文在线| 日本久久中文字幕| 国产一区二区精品丝袜| 亚洲天堂av高清| 自拍偷拍亚洲在线| 亚洲性夜色噜噜噜7777| 国产精品av网站| 一本久久综合亚洲鲁鲁| 久久人人爽人人爽人人片av高请| 亚洲社区在线观看| 国产黑人绿帽在线第一区| 国产精自产拍久久久久久| 欧美精品精品精品精品免费| 北条麻妃在线一区二区| 久久夜色精品亚洲噜噜国产mv| 亚洲国产又黄又爽女人高潮的| 国产精品久久久久国产a级| 91精品视频免费观看| 欧美性猛交xxxx免费看久久久| 欧美高清在线观看| 欧美日韩视频免费播放| 亚洲综合中文字幕68页| 久久久伊人欧美| 欧美精品免费在线| 亚洲激情成人网| 91沈先生在线观看| 国产ts人妖一区二区三区| 欧美日韩一区二区精品| 日韩动漫免费观看电视剧高清| 色偷偷av一区二区三区| 中文字幕亚洲专区| 欧美性极品xxxx做受| 久久久噜久噜久久综合| 尤物九九久久国产精品的分类| 欧美日韩精品国产| 亚洲午夜激情免费视频| 91精品久久久久| 国产成人久久久精品一区| 中文字幕精品网| 欧美视频不卡中文| 国产视频观看一区| 在线精品国产成人综合| 久久91亚洲精品中文字幕奶水| 川上优av一区二区线观看| xxx一区二区| 国产精品a久久久久久| 亚洲欧美国产一本综合首页| 亚洲精品成人av| 久久成人精品电影| 91精品国产91| 国产精品国模在线| 久久亚洲精品成人| 亚洲一区二区三区在线免费观看| 在线播放国产精品| 亚洲国产成人精品久久| 欧美日韩综合视频网址| 日韩av中文字幕在线| 色悠悠国产精品| 色七七影院综合| 7m第一福利500精品视频| 国产精品欧美一区二区| 国产91九色视频| 97不卡在线视频| 欧美精品性视频| 亚洲国产天堂网精品网站| 免费91在线视频| 久久69精品久久久久久国产越南| 国产精品久久久久久久久久免费| 国产精自产拍久久久久久蜜| 欧美成人小视频| 亚洲xxxxx电影| 欧美在线视频网站| 国产亚洲美女精品久久久| 国产97在线播放| 日韩在线国产精品| wwwwwwww亚洲| 久久影院中文字幕| 久久亚洲综合国产精品99麻豆精品福利| 国产亚洲精品成人av久久ww| 欧美激情三级免费| 91老司机精品视频| 亚洲精品国产福利| 欧美日韩加勒比精品一区| 国产日韩欧美日韩| 伊人久久免费视频| 日韩在线观看免费av| 欧美中文在线观看| 午夜精品视频网站| 97精品国产aⅴ7777| 久久男人的天堂| 96sao精品视频在线观看| 亚洲影院污污.| 亚洲国产日韩一区| 亚洲片国产一区一级在线观看| 欧美激情a∨在线视频播放| 亚洲性av网站| 欧美日韩中文字幕综合视频| 一区二区福利视频| 欧美极品在线视频| 91精品国产综合久久久久久蜜臀| 欧美小视频在线| 亚洲欧洲第一视频| 北条麻妃一区二区三区中文字幕| 国产精品丝袜久久久久久高清| 亚洲高清在线观看| 欧美激情精品久久久久久黑人| 亚洲国产成人一区| 91免费福利视频| 欧美视频在线视频| 国产亚洲综合久久| 中文字幕国产亚洲2019| 欧美性极品少妇精品网站| 国产精品久久久久久av下载红粉| 久久精品成人欧美大片古装| 伦理中文字幕亚洲|