天天看點

Day_5 面向對象&方法重載&thisDay 5 面向對象

Day 5 面向對象

面向對象思想

程式是為了模拟現實世界,解決現實問題而使用計算機語言編寫指令集合。

一切客觀存在的事物都是對象。萬物皆對象

任何對象,一定具有自己的屬性(特征)和方法(行為)。

類是對象的模闆,對象是類的執行個體

類:定義了對象應具有的特征和行為,類是對象的模闆。

對象:擁有多個特征和行為的實體,對象是類的執行個體。

類的定義

屬性:通過變量0表示,又稱執行個體變量。

文法:資料類型 屬性名;

位置:類的内部,方法的外部。

方法:通過函數表示,又稱執行個體方法。

文法:

public 傳回值類型 方法名(形參){
  //方法的主體
}
           

執行個體變量

執行個體變量不指派時有預設值

執行個體變量類型 預設值
整數
小數 0.0
字元 \u0000(空格)
布爾 false
其他 null

執行個體變量與局部變量的差別

局部變量 成員變量
定義位置 方法或方法内的結構當中
預設值 無預設值
使用範圍 從定義行到包含其結構結束
命名沖突 不允許重名

執行個體方法

方法的聲明:

代表對象能做什麼。

組成:修飾符 傳回值類型 方法名(形參清單)

方法的實作:

代表對象怎麼做,即如何實作對應的功能。

組成:{ }

方法重載

方法重載概念

在一些情況下,對象的同一種行為可能存在多種實作過程。

重載:一個類中定義多個相同名稱的方法。

要求: 方法名稱相同。

​ 參數清單不同(類型、個數、順序)。

​ 與通路修飾符、傳回值類型無關。

調用帶有重載的方法是,需要根據傳入的實參去找到與之比對的方法。

好處:屏蔽使用差異,靈活、友善。

構造方法

類中的特殊方法,主要用于建立對象。

特點: 名稱與類名完全相同。

​ 沒有傳回值類型。

​ 建立對象時,觸發構造方法的調用,不可通過句點手動調用。

注意:如果沒有在類中顯示定義構造方法,則編譯器預設提供無參構造函數。

對象建立過程

new Student() 觸發對象建立(即會調用構造方法)

1、記憶體中開辟對象空間

2、為各個屬性賦予初始值

3、執行構造方法中的代碼

4、将對象的位址指派給變量

對象的記憶體配置設定

存儲對象的變量中儲存對象的位址,通過變量中的位址通路對象的屬性和方法。

構造方法重載

構造方法也可以重載,遵循重載規則。

建立對象時,根據傳入參數,比對對應的構造方法。

預設構造方法

在類中,如果沒有顯示定義構造方法,則編譯器預設提供無參構造方法。

如已手動添加有參構造方法,則無參構造方法不再預設提供,可根據需求自行添加。

綜上,為了避免忘記寫無參構造函數,故無參構造函數全部顯示書寫。

this關鍵字

類是模闆,可服務于此類的所有對象;

this是類中的預設引用,代表目前執行個體;

當類服務于某個對象時,this則指向這個對象。

this的第一種用法:

調用執行個體屬性、執行個體方法。如:this.name、this.sayHi();

this的第二種用法:

調用本類中的其他構造方法。如:this()、this(實參)

加注:

在調用執行個體變量時,如果執行個體變量不與其它任何變量重名時,this . 字首隐式存在。但若有重名時,局部變量優先,this . 字首不再隐式存在,需顯示書寫來來調用執行個體變量。