Java_基礎_面向物件知識點小結
阿新 • • 發佈:2022-03-23
-
1-匿名物件:沒有名字物件 new 類名()
- 1-1 呼叫方法
- 1-2作為方法引數和返回值傳遞
-
2-繼承
- 2-1格式: extends
- 2-2 特點;
- a 類支援單繼承、多層繼承
- 2-3 子類繼承父類成員特點
- 父類定義非私有成員變數,子類可以直接使用
- 成員方法
- 必須繼承
- 方法名 引數列表一致
- 父類方法返回值可以是子類返回值型別或其父類
- 方法許可權修飾符大於等於父類
- 構造方法
- 子類可以呼叫父類構造方法,在子類構造方法中存在預設super()
- 呼叫父類成員變數
- super.父類成員變數名
- super.方法( 實參)
-
3- this 和super
- this 表示子類物件空間
- 記錄物件地址
- 區分成員變數和區域性變數
- 呼叫本類構造方法this(實參)呼叫語句必須在構造方法第一行
- super屬於父類空間標識
- 作用
- 呼叫父類成員變數
- 呼叫父類成員方法
- 構造方法super(實參)不能和this(實參)共存
- 作用
- this 表示子類物件空間
-
Static
- 修飾符:修飾成員變數、成員方法
- 特點:直接使用類名呼叫
- 靜態程式碼塊:讀取專案配置檔案
- 隨著類的載入而執行,只執行一次
- 細節:
- 靜態成員變數
- 使用類名呼叫,類一載入到記憶體方法區就初始化值,可以直接使用,且可以被多個物件共享
- 靜態成員方法
- 使用類名呼叫
- 靜態使用
- 靜態中只能使用靜態內容
- 非靜態中能使用靜態的,非靜態需要建立物件
- 靜態成員變數
-
Final
- 修飾符,可以修飾類,方法,變數,修飾的內容都不能改變
- 修飾的類:不能有子類
- 修飾的方法:不能被重寫
- 修飾的變數
- 區域性變數 不能改變
- 成員變數:常量,單詞大寫
- 賦值
- 直接final int NUM = 3;
- 構造方法初始化
- 賦值
-
許可權修飾符
- public:跨包、跨類
- protected:子父類
- 預設:同包,同一類
- private:只有本類
-
抽象類
- public abstract class 類名{抽象方法}
- 注意
- 抽象類必須由子類繼承,在子類中重寫抽象方法
- 抽象類不能建立物件,需要建立子類
-
介面
-
定義格式
public interface{ public static final 資料型別常量名= 數值; public abstract 返回值型別 方法名(引數列表); public default 返回值型別 方法名(引數列表){} public static 返回值型別 方法名(引數列表) }
-
類和介面關係
- 一個類可以實現多個介面
- 一個類先繼承父類再實現介面
- 注意:如果父類和介面存在一樣的方法,先使用父類方法
-
介面和抽象類的區別
- 抽象類描述共性內容,可以有構造方法,不能建立物件
- 介面沒有構造方法,描述擴充套件,不能建立物件
-
-
列舉
- 定義格式
public enum 列舉類{ 屬性,屬性... }
-
細節
-
列舉中的屬性都是列舉類物件
-
屬性是被static final修飾
-
使用列舉類屬性:列舉類.屬性名
-
屬性預設呼叫無參構造,想呼叫有參構造:屬性(實參)
-
列舉類中構造方法都是私有的
-
使用在switch語句中:
switch(列舉類.屬性名){ case 屬性名://不用書寫列舉類呼叫 }
-
列舉類是被final修飾
-
-
多型
-
父類引用或者父介面引用指向子類物件
-
多型成員前提
- 必須有繼承或實現
- 必須重寫父類的方法 存在意義
- 格式:父類引用指向子類物件
-
成員特點
- 非靜態成員方法:編譯看左邊,執行看右邊
- 非靜態成員變數:無多型性
-
多型弊端:不能使用子類特有的,想使用需要使用向下轉型,轉型會發生型別轉換異常
父類引用型別變數名 instanceof 子類型別
-
優勢
- 擴充套件性強
- 減少程式碼重複性
-
多型+面向介面程式設計
-
-
內部類
-
匿名內部類
new 父類或父介面(){ 重寫父類或父介面中的方法 }
-
成員內部類
Person.Heart p = new Person().Heart();
-
-
隱式三步
- 呼叫父類構造super()
- 顯示給非靜態成員變數初始化
- 執行構造程式碼塊