溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

老王的JAVA基礎(chǔ)課:第5課 面向?qū)ο?/h1>
發(fā)布時間:2020-08-09 09:25:30 來源:ITPUB博客 閱讀:139 作者:guoduan 欄目:編程語言

  老王的JAVA基礎(chǔ)課:第5課 面向?qū)ο?/p>

  版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。

  本文鏈接:https://blog.csdn.net/u011580177/article/details/106559907

  收起

  JAVA面向?qū)ο蠡A(chǔ)概念

  在JAVA世界中萬物皆對象,我們在開發(fā)中都是對各種對象做調(diào)用、修改與組合。一個java程序可以認(rèn)為是一系列對象的組合,而一個對象又來自于類,那么什么是類?我們可以簡單理解類是一類事物的基礎(chǔ)模板。我們以一張圖來學(xué)習(xí)類和對象的關(guān)系以及方法和變量的基礎(chǔ)概念。

  在生物課上都學(xué)過“界門綱目科屬種”的分類法,現(xiàn)在借用這種方式舉例。假如有一個“鳥”類,它定義了這個鳥的行為和屬性,鳥都有飛行和進食的行為,也存在身高體重等屬性。而“鳥”只是一個總稱并不是某種具體的鳥,它是百靈鳥、喜鵲、鸚鵡的更粗粒度的說法,也可以說“鳥”這個父類是其他三種鳥類的抽象 ,其飛行和進食的方法都繼承自“鳥”類,如“鸚鵡”類在這個基礎(chǔ)上可以有更加個性化的行為,比如“說話”。只需要在“鸚鵡”類內(nèi)定義“說話”方法就實現(xiàn)了全部能力。這就是繼承。

  我們有了“百靈鳥”等個性化的類,可以借此來生成各種各樣的“百靈鳥”對象,比如百靈鳥1體重為200克,百靈鳥2的體重為150克等等。體現(xiàn)了Java的多態(tài)特性。下面來總結(jié):

  類:定義了事物的行為和某些固有屬性或狀態(tài)

  對象:以類為基礎(chǔ)構(gòu)建,是一個類的實例,百靈鳥派生自“鳥”類,它有飛行和進食的能力,也有自身身高體重等屬性,每個對象在內(nèi)存中都是獨立的。

  方法:“鳥”類有飛行和進食的行為,這就是類的方法,派生出的對象也會獲得類的方法,一個類可以有多個方法。

  變量:也即變動的量,百靈鳥體重與喜鵲體重是同一個變量但是是不同的值。每個對象都擁有其獨立的變量,如百靈鳥與喜鵲同屬鳥類,但其各自的變量毫不相干。

  繼承:一類事物可以以更高層次的事物為基礎(chǔ)繼承而來,可以讓事物出現(xiàn)層級,如“界門綱目科屬種”。

  多態(tài):同一個行為具有不同的表現(xiàn)形式,比如鸚鵡和百靈鳥都會飛,但是鸚鵡飛不高,百靈鳥可以飛得很高。

  封裝:我們可以將鳥的一系列行為和熟悉都隱藏在“鳥”類中,從而保護“鳥”類中的方法和屬性不會被破壞,也可以隱藏函數(shù)的具體實現(xiàn)細(xì)節(jié)。

  重載(Overload):在一個類里面,方法名相同而參數(shù)個數(shù)不同,返回類型可以相同也可以不同。

  重寫(Override):在子類中定義和父類中完全相同的方法,此時子類的方法將會覆蓋父類的方法,帶來了可以個性化實現(xiàn)細(xì)節(jié)的靈活性。

  對于重載和重寫我們暫時了解概念即可,在后面的章節(jié)我們會詳細(xì)講這兩種特性的使用和區(qū)別。

  構(gòu)造方法

  構(gòu)造方法是一類特殊的方法,它用來告訴想創(chuàng)建某個類的對象的人“你應(yīng)該如何創(chuàng)建這個類的對象”,比如“鳥”類有一個沒有參數(shù)的構(gòu)造方法還有一個帶參數(shù)的構(gòu)造方法。注意構(gòu)造函數(shù)沒有返回類型,不需要編寫。

  /** 無參構(gòu)造方法 */

  public Bird(){}

  /** 帶參構(gòu)造方法 */

  public Bird(int height, int weight){

  //以下兩行表示將你傳入的身高體重賦值給鳥的實際對象,

  //在對象構(gòu)造完畢時,就擁有了這兩個屬性

  this.height = height;

  this.weight = weight;

  }

  可以用如下兩種方式創(chuàng)建一個“鳥”對象。

  //無參構(gòu)造器創(chuàng)建對象

  Bird bird = new Bird();

  //帶參數(shù)構(gòu)造器創(chuàng)建對象

  Bird bird = new Bird(10, 200);

  這樣我們得到了一個實實在在的對象,可以控制其飛行或是進食。

  bird.fly();

  bird.eat();

  1

  2

  注意:當(dāng)我們沒有定義任何構(gòu)造方法時,java會隱式地創(chuàng)建一個無參構(gòu)造方法,一旦明確編寫帶參數(shù)的構(gòu)造方法時。java就不會替我們生成默認(rèn)的無參構(gòu)造方法,如果需要無參構(gòu)造方法,需要明確編寫。

  以上場景的代碼實現(xiàn)

  首先最基礎(chǔ)的“鳥”類,Bird.java

  **

  * 鳥類

  * @author 老王

  */

  public class Bird {

  /** 身高 */

  int height;

  /** 體重 */

  int weight;

  /**

  * 無參構(gòu)造方法,這里指明你應(yīng)該如何構(gòu)造一個鳥類

  */

  public Bird() {}

  /**

  * 帶參構(gòu)造方法.

  */

  public Bird(int height, int weight) {

  this.height = height;

  this.weight = weight;

  }

  /**

  * 飛行方法

  */

  public void fly(){

  System.out.println("I can fly high!");

  }

  /**

  * 進食方法

  */

  public void eat(){

  System.out.println("I can eat a lot!");

  }

  }

  “鸚鵡”類:Parrot.java

  /**

  * 鸚鵡類,其繼承了鳥類。獲得了鳥類的全部的非私有方法和非私有屬性

  * @author 老王

  */

  public class Parrot extends Bird{

  /**

  * 這是鸚鵡類自定義的說話方法

  */

  public void sayHello(){

  System.out.println("I can speak Chinese!");

  }

  }

  “喜鵲”類:Magpie.java

  /**

  * 喜鵲類,其繼承了鳥類。同樣獲得了鳥類的全部的非私有方法和非私有屬性

  * @author 老王

  */

  public class Magpie extends Bird{

  /**

  * 喜鵲類重寫了父類【Bird】的飛行方法,實現(xiàn)了其自己的個性化飛行方法

  */

  @Override

  public void fly(){

  System.out.println("I can fly very high!");

  }

  }

  測試類:上帝之手 God.java

  /**

  * 上帝之手類

  * @author 老王

  */

  public class God {

  /**

  * 主程序入口

  */

  public static void main(String[] args) {

  //創(chuàng)建鳥對象的方式,無參和有參構(gòu)造

  Bird bird1 = new Bird();

  Bird bird2 = new Bird(10, 20);

  //創(chuàng)建鸚鵡對象的方式,由于鸚鵡類繼承自鳥類,所以可以以Bird來創(chuàng)建鸚鵡對象

  Bird parrot1 = new Parrot();

  Parrot parrot2 = new Parrot();

  System.out.println("----------鸚鵡發(fā)出的行為----------");

  //鸚鵡學(xué)舌,來自于自定義的個性方法,而喜鵲沒有這個方法,所以喜鵲不能說話

  parrot2.sayHello();

  parrot2.fly();

  System.out.println("----------鸚鵡發(fā)出的行為----------");

  //創(chuàng)建喜鵲對象的方式,同樣由于喜鵲類繼承自鳥類,所以可以以Bird來創(chuàng)建喜鵲對象

  Bird magpie1 = new Magpie();

  Magpie magpie2 = new Magpie();

  //由于喜鵲類覆蓋了鳥類的默認(rèn)飛行方法,所以喜鵲飛行與眾不同!

  System.out.println("----------喜鵲發(fā)出的行為----------");

  magpie2.fly();

  System.out.println("----------鸚鵡發(fā)出的行為----------");

  }

  }

   執(zhí)行結(jié)果:

  ----------鸚鵡發(fā)出的行為----------

  I can speak Chinese!

  I can fly high!

  ----------鸚鵡發(fā)出的行為----------

  ----------喜鵲發(fā)出的行為----------

  I can fly very high!

  ----------鸚鵡發(fā)出的行為----------

  總結(jié)

  通過這節(jié)課我們學(xué)習(xí)了類和對象以及java其他獨有的語言特性,和最重要的特性——面向?qū)ο?。面向?qū)ο鬄槲覀儙砹烁鱾€方面的好處,使程序易理解、易維護、易擴展、質(zhì)量高。

  目錄

  老王的JAVA基礎(chǔ)課:序言

  老王的JAVA基礎(chǔ)課:第1課 計算機基礎(chǔ)知識

  老王的JAVA基礎(chǔ)課:第2課 JDK安裝和環(huán)境變量配置

  老王的JAVA基礎(chǔ)課:第3課 IDEA的安裝和使用

  老王的JAVA基礎(chǔ)課:第4課 以hello world學(xué)習(xí)基礎(chǔ)語法

  其他文章

  2020年高效搬磚必備的IDEA插件(附安裝包)

  詳解從p12證書提取RSA公私鑰和序列號(小白向)

  ————————————————

  版權(quán)聲明:本文為CSDN博主「風(fēng)舞葉揚」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

  原文鏈接:https://blog.csdn.net/u011580177/article/details/106559907

沈陽治療男科醫(yī)院哪家好 :http://www.024sdjk.com/

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI