java SE 類和物件導向

2021-08-14 15:34:57 字數 3390 閱讀 8494

物件導向

將客觀世界中的事物描述為物件,通過抽象思維方法將需要解決的實際問題分解**們易於理解的物件模型,然後通過物件模型構建應用程式的功能。(針對使用者提出的要求進行分析,並將分析的結果拼接成完整的個體,然後在把這個個體分塊完成,最後把所有完成的小個體整合在一起。)人是怎麼想的,讓計算機按照人的想法去實現。 類

具有相同屬性和行為的一類事物。類實際是表示乙個客觀世界某類群體的一些基本特徵抽象。屬性:說明是什麼,是靜態的,乙個個具體的資訊,實際上,乙個屬性就是乙個變數。行為:說明幹什麼,是動態的。 物件

乙個個具體的東西,類中的乙個具體/抽象。

類和物件的關係

類是物件的模板,物件是類的例項。

構造方法

方法名與類名相同

沒有返回值,甚至連void都沒有

在建立物件時由jvm自動呼叫

作用是:類成員變數的初始化。

類的定義

之前說過,有2種方式,現在來回顧一下,分別是public class  +類名   和class  +類名。記住:類名的每乙個單詞的首字母要大寫(駝峰式命名規則)。

類的使用

通過物件來使用的。

物件的建立和使用(2種建立),物件再使用前,必須例項化。

方法1

類名 物件名稱=null;   //宣告物件

物件名稱=new類名();        //例項化物件

方法2

類名 物件名稱=new類名();

兩種建立方法與陣列的建立是類似的,其含義也是如此,new 是用來在記憶體中開闢一塊空間的,在宣告之後,得找個地方存放,不是嗎?有需要的話,我們可以建立多個物件,要求物件名不同。

當要訪問物件中的屬性或方法時:

物件名.屬性名;

物件名.方法名();

當在主函式中給屬性賦值時,可以:

物件名.屬性=「y」;

其中等號右邊所賦的值與資料型別有關,當為字串型別時,就是上邊這種情況。當是int型別的時候:物件名.屬性=10;

物件導向的特徵:封裝,繼承,多型

封裝:兩個方面—>1、把物件的屬性和行為看做是乙個整體,把它們緊緊的繫結在一起,放到物件中。-->2、把不需要外界知道的資訊隱藏起來。隱藏屬性、方法或方法實現細節的過程(私有屬性,公有方法)。

成員變數(全域性的):類中,方法以外的變數。

區域性變數:方法內部宣告的變數。

成員變數和區域性變數區別:

注意事項:在同乙個類中區域性變數與成員變數的名稱可同名,在使用時區域性變數的優先順序高(就近原則),在同乙個方法中不允許由同名的區域性變數,在不同的方法中可以有同名的區域性變數。

成員變數和區域性變數的區別

成員變數(全域性變數)

區域性變數

在類中的位置

類中方法外

方法內或方法宣告上

記憶體中的位置

堆記憶體棧記憶體

宣告週期

隨著物件出現和消失

隨著方法的呼叫出現和消失

初始化值不同

有預設的初始化值

沒有預設,必須先賦值再用

訪問控制修飾符

本類中同包不同類

不同包子類

所有地方

private

(私有)

friendly

(預設)

protected

(受保護)

public

(公共的)

static:靜態的。

static可以修飾成員變數,也可以修飾成員方法:隨著類的載入而載入,優先於物件存在,被類的所有物件共享。

this----->自己的,本類的。

super和this

序號區別點

this

super

屬性訪問

訪問本類中的屬性,如果本類中沒有此屬性,則從父類中查詢。

直接訪問父類屬性

方法訪問本類中的方法,如果本類中沒有此方法則從父類中繼續查詢。

直接訪問父類中的方法

呼叫構造

呼叫本類構造,必須放在構造方法的首行。

呼叫父類構造,必須放在子類構造方法的首行。

特殊表示當前物件

無此概念

sun公司建議:封裝時,需要至少加乙個無參、乙個包含所有引數的構造器。(兩個構造)

無參構造方法:每乙個類中都有乙個預設的**無參構造方法。系統給與的預設無參構造方法。

有參構造方法:用於例項化物件的同時給與物件的成員變數賦予使用者給與的值。

注意:當乙個類中顯示的定義了有參構造方法時,其預設**構造方法將消失,如需使用無參構造方法時,則必須顯示定義無參構造方法。

方法過載:在同乙個類中,方法名相同,引數列表不同(引數的個數,型別,順序)overload。

過載的作用,提高程式的靈活度。

繼承:在乙個類的基礎上產生乙個新類的過程,叫繼承

extends(2個寫法)

1,先寫父類,再寫子類

2,先寫子類,抽取相同的部分作為父類,被子類繼承

優點:提高**效率,避免**重複

特點:(5大點)

*   1,子類繼承父類非私有的屬性和方法

*   2,子類也可以擴充套件自己的屬性和方法

*  3,子類無法繼承父類的構造器,只能通過super呼叫

*  4,子類可以重寫父類的方法

*  5,可以宣告父類,建立子類(父類能出現的地方,子類一定可以出現)-->3小點

*      1,宣告什麼型別,就只能呼叫本型別的屬性和方法

*      2,建立什麼型別,執行什麼型別的屬性和方法

*      3,建立什麼型別,就可以強轉為什麼型別

重寫:在繼承中,方法簽名相同(方法名+引數列表),擴充套件:方法重寫時注意:方法名相同,引數列表相同,返回值型別相同,子類的訪問修飾符大於等於父類的訪問修飾符。

這裡注意一點:final,在修飾乙個類的時候,這個類就沒有子類,修飾屬性時,就表示這是乙個常量,不可更改,修飾方法時,就是說,這個方法是不能被重寫的。

子類物件再例項化前會先預設調研父類中的構造方法,所以在對子類例項化前,要對父類的屬性進行初始化。

多型:多型就是

一種事物

,多種形態。它的直接表現就是  過載和重寫。

對過載 和重寫的進一步比較:

方法的過載與重寫的區別

序號區別點

過載重寫

單詞overloading

overriding

定義

方法名稱相同,引數的型別,或個數,或順序不同。

方法名稱,引數型別,返回值型別全部相同,只有方法體不同。

對許可權沒有要求

被重寫的方法不能擁有更嚴格的許可權

發生在乙個類中

發生在繼承類中。

物件 類和物件導向程式設計

物件 物件是數個屬性無序的集合。ecma 262使用一些內部特性來描述屬性的特徵 物件的屬性的特性 屬性分為資料屬性 定義屬性時使用 和訪問器屬性 獲取或設定屬性值時使用 資料屬性 資料屬性包含乙個儲存資料值的位置。值會從這個位置讀取,也會寫入到這個位置。資料屬性有 4個特性描述它們的行為。conf...

JAVA SE 物件導向

封裝 繼承 多型 符合我們思想習慣的思想 複雜事情簡單化 執行者變成指揮者 事物 類 封裝 屬性,功能 屬性 成員變數 屬性 功能 成員方法 功能 例項化類 建立物件 leiming duixiangming new leiming 獲取屬性 duixiangming.shuxingming 呼叫方...

類和物件導向程式設計 初級

什麼是物件導向程式設計?假如我們要開發乙個坦克大戰的遊戲 我們這個遊戲有一些屬性 當前剩餘多少條命 沒命的話,遊戲結束,開始有3條命 當前遊戲的分數 每次殺死敵人得分 boss是否死亡 死亡重新開始遊戲,損失一條命 我們有乙個主角 坦克 它有一些屬性 等級 等級越高,攻擊力越強,初始1級 當前血量 ...