亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

java語言

Java語言繼承的要點(diǎn)

時間:2024-10-24 00:46:05 java語言 我要投稿
  • 相關(guān)推薦

Java語言繼承的要點(diǎn)

  導(dǎo)語:Java中的繼承作為Java面向?qū)ο笕筇匦灾,在知識點(diǎn)上而言,還是很多的。下面讓我們一起來學(xué)習(xí)吧!

  1. 繼承的概念:

  繼承在本職上是特殊——一般的關(guān)系,即常說的is-a關(guān)系。子類繼承父類,表明子類是一種特殊的父類,并且具有父類所不具有的一些屬性或方法。

  2. 繼承中的初始化順序:

  從類的結(jié)構(gòu)上而言,其內(nèi)部可以有如下四種常見形態(tài):屬性(包括類屬性和實(shí)例屬性)、方法(包括類方法和實(shí)例方法)、構(gòu)造器和初始化塊(包括類的初始化塊和實(shí)例的初始化塊)。對于繼承中的初始化順序,又具體分為類的初始化和對象的初始化。

  類初始化:

  在jvm裝載類的準(zhǔn)備階段,首先為類的所有類屬性和類初始化塊分配內(nèi)存空間。并在類首次初始化階段中為其進(jìn)行初始化,類屬性和類初始化塊之間的定義時的順序決定了其初始化的順序。若類存在父類,則首先初始化父類的類屬性和類初始化塊,一直上溯到Object類最先執(zhí)行。

  對象初始化:

  在new創(chuàng)建對象時,首先對對象屬性和初始化塊分配內(nèi)存,并執(zhí)行默認(rèn)初始化。如果存在父類,則先為父類對象屬和初始化塊先分配內(nèi)存并執(zhí)行初始化。

  然后執(zhí)行父類構(gòu)造器中的初始化程序,接著才開始對子類的對象屬性和初始化塊執(zhí)行初始化。

  注:

  1. 在對象初始化階段,屬性和方法均針對子類可以從父類繼承過來的屬性和方法而言,一般而言,都是針對父類中非private而言的。

  因?yàn)閜rivate修飾的為父類所特有的,子類沒有繼承過來,當(dāng)new子類時,無須為其分配空間并執(zhí)行初始化。當(dāng)然了,父類的構(gòu)造器子類也是不繼承過來的,

  但構(gòu)造器另當(dāng)別論。

  2. 類的初始化只執(zhí)行一次,當(dāng)對同一個類new多個對象時,類屬性和類初始化塊只初始化一次。

  3.繼承中的隱藏:

  隱藏含義:實(shí)際上存在,但是對外不可見。

  Java類具有三種訪問控制符:private、protected和public,同時當(dāng)不寫這三個訪問控制符時,表現(xiàn)為一種默認(rèn)的訪問控制狀態(tài)。因此,一共具有四種訪問控制級別。

  具體訪問控制表現(xiàn)如下:

  private修飾的屬性或方法為該類所特有,在任何其他類中都不能直接訪問;

  default修飾的屬性或方法具有包訪問特性,同一個包中的其他類可以訪問;

  protected修飾的屬性或方法在同一個中的其他類可以訪問,同時對于不在同一個包中的子類中也可以訪問;

  public修飾的屬性或方法外部類中都可以直接訪問。

  當(dāng)子類繼承父類,子類可以繼承父類中具有訪問控制權(quán)限的屬性和方法(一般來說是非private修飾的),對于private修飾的父類所特有的屬性和方法,子類是不繼承過來的。

  當(dāng)子類需要改變繼承過來的方法時,也就是常說的重寫父類的方法。一旦重寫后,父類的此方法對子類來說表現(xiàn)為隱藏。以后子類的對象調(diào)用此方法時,都是調(diào)用子類重寫后的方法,但子類對象中想調(diào)用父類原來的此方法時,可以通過如下兩種方式:

  1.將子類對象類型強(qiáng)制轉(zhuǎn)化為父類類型,進(jìn)行調(diào)用;

  2.通過super調(diào)用。

  同樣的,如果在子類中定義父類中相同名稱的屬性時,父類屬性在子類中表現(xiàn)為隱藏。

  4.繼承中的this和super:

  構(gòu)造器中的this表示當(dāng)前正在初始化的對象引用,方法中的this表示當(dāng)前正在調(diào)用此方法的對象引用。this具體用法表現(xiàn)在一下幾個方面:

  1.當(dāng)具多個重載的構(gòu)造器時,且一個構(gòu)造器需要調(diào)用另外一個構(gòu)造其,在其第一行使用this(param)形式調(diào)用,且只能在第一行;

  2.當(dāng)對象中一個方法需要調(diào)用本對象中其他方法時,使用this作為主調(diào),也可以不寫,實(shí)際上默認(rèn)就是this作為主調(diào);

  3.當(dāng)對象屬性和方法中的局部變量名稱相同時,在該方法中需要顯式的使用this作為主調(diào),以表示對象的屬性,若不存在此問題,可以不顯式的寫this。

  其實(shí),其牽涉到的一個問題就是變量的查找規(guī)則:先局部變量 => 當(dāng)前類中定義的變量 => 其父類中定義的可以被子類繼承的變量 => 父類...

  super表示調(diào)用父類中相應(yīng)的屬性和方法。在方法中,若需要調(diào)用父類的方法時,也一定要寫在第一行

  5. 繼承與組合:

  從單純的實(shí)現(xiàn)效果上看,繼承和組合都能達(dá)到同樣的目的。并且都是實(shí)現(xiàn)代碼復(fù)用的有效方式。

  但在一般性的概念層次中,兩者具有較為明顯的差別。

  繼承表現(xiàn)為一般——特殊的關(guān)系,子類是一個特殊的父類,是is-a的關(guān)系。父類具有所有子類的一般特性。

  組合表現(xiàn)為整體——部分關(guān)系,即has-a關(guān)系。在組合中,通過將“部分”單獨(dú)抽取出來,形成自己的類定義,并且在“整體”

  這個類定義中,將部分定義為其中的一個屬性,并通過get和set方法,以此可以調(diào)用“部分”類中的屬性和方法。


【Java語言繼承的要點(diǎn)】相關(guān)文章:

Java語言接口與繼承的本質(zhì)06-28

java繼承是什么06-11

java的繼承與組合的區(qū)別07-19

Java實(shí)現(xiàn)多繼承的實(shí)例07-18

java繼承抽象類07-28

編程java繼承是什么09-20

java代碼的基本要點(diǎn)08-01

關(guān)于Java中繼承的初級理解11-03

成為Java高手的學(xué)習(xí)要點(diǎn)匯編06-25

Java 語言概述09-05