JAVA SE 物件導向

2021-09-24 12:49:24 字數 3415 閱讀 1614

封裝、繼承、多型

符合我們思想習慣的思想、複雜事情簡單化、執行者變成指揮者

事物----類—封裝(屬性,功能);

屬性—成員變數(屬性);

功能—成員方法(功能)

例項化類(建立物件):leiming duixiangming=new leiming();

獲取屬性:duixiangming.shuxingming;

呼叫方法:duixinagming.fangfaming;

(成員變數可以不賦初值,有預設值;)

是指隱藏物件的屬性和實現細節,僅對外提供公共訪問方式。

好處:隱藏實現細節,提供公共的訪問方式

提高了**的復用性

提高安全性。

原則:將不需要對外提供的內容都隱藏起來。

把屬性隱藏,提供公共方法對其訪問。

定義類其實就是定義類的成員(成員變數和成員方法)

成員變數:和以前定義變數是一樣的,只不過位置發生了改變。在類中,方法外。

成員方法:和以前定義方法是一樣的,只不過把static去掉,後面在詳細講解static的作用。

類和物件的概念:類:是一組相關的屬性和行為的集合

物件:是該類事物的具體體現

構造方法:方法名和類名相同,沒有返回值型別,也無具體返回值,無需void.

作用:對類進行初始化,

注意事項:系統預設提供空參構造方法

如果自己手動寫出有參構造則會自動覆蓋系統給出的空參構造

建立物件要借助構造方法完成類的例項化

給成員變數賦值的兩種方式:set***()方法、構造方法

方法過載:允許乙個類中可以存在多個同名方法,引數個數或型別不一樣

自定義的類中,手動給出有參構造後,預設的空參構造就消失,若需要使用,則需另行寫出乙個空參構造。(否則會報錯)

有參構造建立物件並給成員變數賦值等效於用空參構造建立並呼叫set()方法

方法重寫:子類與父類重名方法(方法名、引數列表、返回值型別都一樣),呼叫子類方法。

快捷鍵:ctrl+o(同時對子類的重寫加標記)

應用: 當子類需要父類的功能,而功能主體子類有自己特有內容時,可以重寫父類中的方法。這樣,即沿襲了父類的功能,又定義了子類特有的內容。

注意事項:只能重寫非private;

被重寫的方法許可權修飾符不能低於(一樣或者高於)父類;

靜態方法無法重寫;(理由見多型)

final修飾的只繼承不重寫

分類:區域性**塊、構造**塊、靜態**塊、同步**塊(多執行緒)

區域性**塊:方法中;及早釋放**塊的記憶體

構造**塊:類中,平行方法;優先構造方法執行

靜態**塊:給構造**塊前加static修飾;由於類只載入一次,所以靜態**塊只執行一次;可以進行一些初始化操作

關鍵字:extends

優點:提高**的復用性;維護性(雙面性);

缺點:類之間增加耦合性(軟體設計原則:高內聚,低耦合)

注意事項:只支援單繼承,可以多層繼承;

只能繼承非private;

頂層父類object,所有的類都可直接或者間接繼承

構造方法不可繼承

繼承中也遵循就近原則

建立子類物件時,父類空參構造先執行(子類繼承父類,需先將父類初始化(程式自己會執行)才能使用)

每個類的構造方法中第一行,預設語句super(),呼叫父類的空參構造(用來初始化父類)

當要呼叫父類有參構造,用super(canshu),必須位於第一行

概述:一種事物不同時間的不同狀態

前提:有繼承關係;有方法重寫;父類引用指向子類物件。

格式:父 f = new 子();

成員訪問特點:

成員變數:編譯看左邊,執行看左邊。

構造方法:建立子類物件的時候,會訪問父類的構造方法,對父類的資料進行初始化。

成員方法:編譯看左邊,執行看右邊。

靜態方法:編譯看左邊,執行看左邊。(靜態和類相關,算不上重寫,所以,訪問還是左邊的)

好處:提高了**的維護性(繼承保證)

提高了**的擴充套件性(由多型保證)

弊端:不能使用子類特有的功能

解決:把父類的引用強制轉換為子類的引用。(向下轉型)

向下轉型:zi zi=(zi) fu;(將父類強制向下轉型)

zi.fangfa();(呼叫子類獨有的方法)

定義:將乙個類定義到另乙個類的內部;成員內部類,區域性內部類

訪問特點:內部類可以直接訪問外部類的成員,包括私有。

外部類要訪問內部類的成員,必須建立物件。

按照內部類位置分類:

成員位置:在成員位置定義的類,被稱為成員內部類。

區域性位置:在區域性位置定義的類,被稱為區域性內部類。

成員內部類:相當於外部類的成員位置

格式: 外部類名.內部類名 物件名 = 外部類物件.內部類物件;

建立物件:waibuleiming.neibuleiming mingzi=new waibulei().new neibulei();

特點: 內部可以直接訪問外部成員包括私有的;

外部訪問內部需建立物件;

可以被private修飾,但外界不能直接建立物件(借助本類平行方法呼叫);

可以被static修飾,wai.nei mingzi=new wai.nei();

修飾符:

private 為了保證資料的安全性

static 為了方便訪問資料

注意事項: 靜態內部類訪問的外部類資料必須用靜態修飾。

成員方法可以是靜態的也可以是非靜態的

被靜態修飾後的訪問:

格式:外部類名.內部類名 物件名 = new 外部類名.內部類名();

區域性內部類:處於外部類的方法中

特點: 外界無法建立,方法中建立在呼叫方法;

可以在本方法內建立物件;

可以直接訪問外部,包括私有;

區域性內部類訪問外部類的區域性變數,變數要加final變成常量(因為區域性變數會隨著方法的呼叫完畢而消失,這個時候,區域性物件並沒有立馬從堆記憶體中消失,還要使用那個變數。為了讓資料還能繼續被使用,就用fianl修飾,這樣,在堆記憶體裡面儲存的其實是乙個常量值。)

可以建立內部類物件,通過物件呼叫內部類方法,來使用區域性內部類功能

匿名內部類:區域性內部類的簡寫;

前提:存在乙個類或者介面;這裡的類可以是具體類也可以是抽象類。

本質:是乙個物件,是實現了該介面或繼承了該抽象類的子類物件;

作用:作為引數傳遞(new的一整塊)

格式:new 類名或者介面名() ;

匿名物件: new duixiang();每乙個新物件都是乙個新的空間。(預設呼叫空參構造)

作為實參傳遞;一次性物件。

不加new的物件為原先建立的物件

應用場景:呼叫方法,僅僅只呼叫一次的時候。

匿名物件可以作為實際引數傳遞

(看到乙個方法的形參,要乙個類型別,那麼傳該類的物件)

快捷鍵設定set:alt+insert 選擇set get 選擇

JavaSE 物件導向下

1.1.定義乙個father和child類,並進行測試。要求如下 1 father類為外部類,類中定義乙個私有的string型別的屬性name,name的值為 zhangjun 2 child類為father類的內部類,其中定義乙個introfather 方法,方法中呼叫father類的name屬性...

JAVASE 物件導向(二)

物件導向的特徵 封裝性,繼承性,多型性 封裝性 當建立了類以後,通過 物件.屬性 的方式對相應的屬性賦值的話,可能會出現不滿足實際情況的意外,我們考慮不讓物件直接作用屬性,而通過 物件.方法 的形式,來控制物件屬性的訪問。1.將屬性私有化 2.提供公共的set,get方法 許可權從大到小 publi...

JAVASE 物件導向 四

多型 在同乙個時刻體現不同的狀態,多型主要體現在向不同的物件傳送同乙個資訊,不同的物件在接受到資訊後產生不同的行為 方法 物件可以用自己的方法去響應共同的資訊。多型性的表現 1.方法的過載與重寫 2.子類物件的多型性 使用的前提 1.要有繼承關係。2.要有方法的重寫 格式 person p new ...