Day07 物件導向2(繼承)

2021-10-12 21:57:06 字數 3666 閱讀 8236

1.概述

2.構造**塊

3.區域性**塊

4.測試

package cn.tedu.oop;

//測試 **塊

/* * 總結:

* 1.構造方法:用來建立物件或者完成物件的初始化,在new時觸發

* 2.構造**塊:位置是類裡方法外,作用是抽取狗髒方法的共性,在new時觸發

* 3.區域性**塊:位置是方法類,作用是控制變數的作用範圍,當方法被呼叫時觸發

* 4.執行順序:

* new時:構造**塊》構造方法》區域性**塊(呼叫方法時)

* */

public

class

test04_block

}class

animal

public

animal()

public

animal

(string name)

public

animal

(string name,

int age)

public

void

show()

} //報錯,超出x的作用範圍

}}

package cn.tedu.oop;

//測試 **塊

//面試題 輸出結果是?

public

class

test05_block2

}class

animal2

}public

animal2

(int a)

}

1.概述

2.測試

1)當變數名相同時

package cn.tedu.oop;

//測試 this

public

class

test06_this

}class

demo

}

2)構造方法間的呼叫
package cn.tedu.opp;

//測試 this關鍵字

/* * 總結

* 1.this代表的是 本類物件的乙個引用

* 2.this可以省略--不同名時,呼叫成員變數成員方法,都可以省略this

* 3.以下兩種情況this必須不能省略:

* 當區域性變數名和成員變數名相同時,通過this呼叫成員變數

* 當在構造方法中互相呼叫時,必須通過this呼叫,且位置必須是第一條語句

* (普通方法裡可以放在任意位置)

* */

public

class

test01_this

}class

person

public

person

(string name)

}

類包

子類任意

*public*√√

√√*protected*√√

*default*√√

*private*

√1.概述

2.特點

3.測試

package cn.tedu.opp;

//測試 繼承

public

class

test02_extends

}class

animal

private

void

sleep()

}class

dogextends

animal

class

catextends

dog

1.特點

1.概述

1)成員變數的使用

package cn.tedu.opp;

//測試 繼承的使用--成員變數

/* * 總結

* 1.繼承關係中,父類的成員變數可以讓子類去繼承

* 2.子類繼承了父類的成員變數後,如何使用?

* 如果子類中沒有同名的資源,直接使用(省略super)

* 如果子類中含有和父類同名的資源,必須使用super來呼叫父類的內容

* */

public

class

test03_useextends

}class

fuclass

ziextends

fu}

2)成員方法的使用
package cn.tedu.opp;

//測試 繼承的使用--成員方法

/* * 總結

* 1.子類可以繼承父類的所有方法(除了private的),還能進行擴充套件,還能修改父類的方法

* 2.方法重寫是什麼時候發生?--想要改父類原有的功能時

* 重寫的要求:子類的方法宣告和父親一樣 + 有足夠的許可權

* 重寫後,改的是子類的

* 3.面試題:overload和override的區別?

* overload是過載:同乙個類裡,方法名相同,但是引數列表不同的現象,好處是靈活

* override是重寫:在子類裡想要修改父類原來的實現方式,重寫的要求:子類的方法宣告和父親一樣 + 有足夠的許可權

* */

public

class

test04_useextends2

}class

father

void

drink()

private

void

play()

}//1.子類可以繼承父類的所有方法們(除了private的)

class

sonextends

father

//3.子類繼承方法後,如果想改父類原來的方法?--方法重寫

//子類的方法宣告/簽名必須和父類的一樣 + 擁有足夠的許可權(>=)

public

void

eat(

)}

3)構造方法的使用
package cn.tedu.opp;

//測試 繼承的使用 -- 構造方法

/* * 1.當建立子類物件時,一定會觸發子類的構造方法

* 2.第一行就隱藏著super(),回去執行父類的無參構造(低層已經建立好了父類物件了)

* 構造方法的執行順序:父類的》子類的

* 3.當父類中只提供了含參構造時,就真的沒有無參構造了

* 子類的super()會報錯,因為找不到父類的無參構造了,只能呼叫父類的含參構造

* * */

public

class

test05_useextends3

}class

fu3;

public

fu3(

int a)

}class

zi3extends

fu3}

1.this和super的區別

2.重寫與過載的區別(overload和override的區別)

day07物件導向

為什麼使用抽象類 1 定義 dog類 有顏色屬性和叫的方法 2 定義 bird 類有顏色屬性和叫的方法 3 定義其父類 animal 1 抽取共性顏色屬性和叫的方法 1 顏色的屬性可以使用預設初始化值。2 叫的方法在父類中如何定義?1 狗是旺旺 2 鳥是嘰嘰喳喳 3 可以將父類的方法定義為狗叫讓鳥繼...

day07 物件導向程式設計(1)

修飾符 class 類名 概念 如何由類建立物件以及實現功能的呼叫 物件的記憶體解析 格式修飾符 資料型別 屬性名 初始化值 成員變數 vs 區域性變數 相同點 都是變數,定義的格式相同的。都有作用域,在其宣告的作用域內是有效的。不同點 類中宣告的位置不同 成員變數 直接宣告在類中 區域性變數 方法...

物件導向 day07 物件導向使用場景(十)

1 概述 2 知識回顧 3 使用場景 之前我們學了物件導向知識,那我們在什麼時候用呢?不可能什麼時候都需要用物件導向吧,除非你是純的物件導向語言,好的,我們下面就來談談 在學物件導向之前我們都是用 函式 物件導向程式設計其實就是 類 物件12 3456 78910 11class類名 def函式1 ...