day12 物件導向 this super 繼承

2021-08-22 07:18:35 字數 2253 閱讀 6819

this表示當前物件,主要存在於兩個位置:

構造器中:  就表示當前建立的物件.

方法中:  哪乙個物件呼叫this所在的方法,那麼此時this就表示哪乙個物件.

當乙個物件建立之後,jvm會分配乙個引用自身的引用:this.

使用this場景:

① 解決成員變數和引數(區域性變數)之間的二義性,必須使用;一般set方法裡,區域性變數覆蓋成員變數

② 同類中例項方法間互調(此時可以省略this,但是不建議省略)。

③ 將this作為引數傳遞給另乙個方法;

④ 構造器重載的互調,this([引數])必須寫在構造方法第一行;當多個構造器重載時,或者多個方法過載時,一般的,我們是少引數的呼叫多引數的.

⑤ 將this作為方法的返回值(鏈式方法程式設計);

⑥ static不能和this一起使用;

給物件設定資料:

1):setter注入(屬性注入).

2):構造注入.

繼承關係:子類可以繼承父類原來的某些定義,也可以增加原來父類所沒有的定義,或者覆寫父類中的某些特性。只允許單繼承,允許多重繼承.

object類要麼是乙個類直接父類,要麼是乙個類間接父類.

子類繼承父類之後,可以擁有父類的某一些狀態和行為(子類復用了父類的功能或狀態).

子類到底繼承了父類的哪些成員(根據訪問修飾符來判斷):

1):如果父類中的成員使用public修飾,子類繼承.

2):如果父類中的成員使用protected修飾,子類也繼承,即使父類和子類不在同乙個包中.

3):如果父類和子類在同乙個包中,此時子類可有繼承父類中 預設修飾符的成員.

4):如果父類中的成員使用private修飾,子類打死都繼承不到.因為private只能在本類中訪問.

5):父類的構造器,子類也不能繼承,因為構造器必須和當前的類名相同.

方法覆寫的原則(一同兩小一大):override

一同:① 例項方法簽名必須相同。 (方法簽名= 方法名 + 方法的引數列表)

兩小:② 子類方法的返回值型別是和父類方法的返回型別相同或者是其子類。

子類可以返回乙個更加具體的類.

③ 子類方法宣告丟擲的異常型別和父類方法宣告丟擲的異常型別相同或者是其子類。

子類方法中宣告丟擲的異常小於或等於父類方法宣告丟擲異常型別;

子類方法可以同時宣告丟擲多個屬於父類方法宣告丟擲異常類的子類(runtimeexception型別除外);

一大:④ 子類方法的訪問許可權比父類方法訪問權 限更大或相等。

private修飾的方法不能被子類所繼承,也就不存在覆蓋的概念.

解決子類繼承父類之後,可能父類的某乙個方法不滿足子類的具體特徵,此時需要重新在子類中定義該方法,並重寫

只有方法存在覆蓋的概念,字段沒有覆蓋.

6.super: 當前物件的父類物件.

7. super關鍵字的使用場景: 子類種有父類應用super;static不能和super以及this共存.

1):可以使用super解決子類隱藏了父類的字段情況.該情況,我們一般不討論,因為破壞封裝.

2):在子類方法中,呼叫父類被覆蓋的方法,引出super的例子,此時必須使用super.

3):在子類構造器中,呼叫父類構造器,此時必須使用super語句:super([實參]).

子類初始化過程:建立子類物件的過程.

在建立子類物件之前,會先建立父類物件.

呼叫子類構造器之前,在子類構造器中會先呼叫父類的構造器,預設呼叫的是父類無引數構造器..

1): 如果父類不存在可以被子類訪問的構造器,則不能存在子類.

2):如果父類沒有提供無引數構造器,此時子類必須顯示通過super語句去呼叫父類帶引數的構造器.

所謂隱藏就是「遮蔽」的意思。不叫覆蓋

① 滿足繼承的訪問許可權下,隱藏父類靜態方法:若子類定義的靜態方法的簽名和超類中的靜態方法簽名相同,那麼此時就是隱藏父類方法。注意:僅僅是靜態方法,子類存在和父類一模一樣的靜態方法.遵守一同兩小一大不?怎麼訪問

② 滿足繼承的訪問許可權下,隱藏父類字段:若子類中定義的字段和超類中的欄位名相同(不管型別),此時就是隱藏父類字段,此時只能在子類通過super訪問被隱藏的字段。

③ 隱藏本類字段:若本類中某區域性變數名和欄位名相同不管型別,此時就是隱藏本類字段,(作用域)此時只能通過this訪問被隱藏的字段。

class superclass

}class subclass extends superclass

public static void ooxx(){}//隱藏,不叫覆蓋

}

day12 物件導向 介面

package com.oop.demo11 抽象思維 inte ce 定義的關鍵字,介面需要實現類 public inte ce userservice package com.oop.demo11 public inte ce timeservice package com.oop.demo11...

day12 物件導向(下)

1 概念 單態 這個物件只有唯一的一種狀態 student s new student 多型 這個物件存在多種狀態。是指同一行為,具有多個不同表現形式。2 多型實現的前提 1 要有繼承或者實現的關係 2 方法的重寫 如果沒有方法重寫,格式不會報錯,這樣的多型是沒有任何意義 3 父類的引用指向子類物件...

Day12 物件導向的三大特性之多型

當中體現多型性,其實就是一句話 父類引用指向子類物件。格式 父類名稱物件名 new子類名稱 或者 介面名稱物件名 new實現類名稱 多型注意事項 1.多型是方法的多型,屬性沒有多型 2.需要有繼承關係 如果轉換無關係型別,就會有型別轉換異常 classcastexception 3.存在條件 不能被...