一、方法的重載和方法的重寫
重載:overload,同一給類中方法名相同,參數不同。作用:一種行為提供多種實現方式並提高可讀性。
重寫:override,子類繼承父類的方法,內容不同。作用:父類方法無法滿足子類的要求,子類通過方法重寫滿足要求
二、簡述static關鍵字的作用。
static可以修飾變量、方法、代碼塊和內部類,分別稱為靜態變量,靜態方法,靜態代碼塊和靜態內部類。
1)靜態遍歷屬於這個類所有,即由該類創建的所有對象共享同一個static變量。
a)不管有多少個對象,靜態變量只有一份。
b)靜態變量存放在方法區中。
c)可通過對象名.靜態變量名,類名.靜態變量名兩種方式訪問。
d)靜態變量在第一次使用類的時候分配空間。
2)靜態方法
可通過對象名.靜態方法名和類名.靜態方法名兩種方式訪問。
3)靜態代碼塊
當類第一次使用時執行靜態代碼塊,且只被執行一次,主要作用是實現static屬性的初始化
4)靜態內部類
屬於整個外部類,而不屬於外部類的每個對象。
三、final和abstract關鍵字的作用
final和abstract是功能相反的兩個關鍵字,可以對比記憶
1)abstract可以用來修飾類和方法,不能用來修飾屬性和構造方法;使用abstract修飾的類是抽象類,需要被繼承,使用abstract修飾的方法是抽象方法,需要被子類重寫。
2)final可以修飾類、方法和屬性,不能修飾構造方法。使用final修飾的類不能被繼承,使用final修飾的方法不能被重寫,使用final修飾的變量的值不能被修改,被final修飾的變量值稱為常量。
3)特別注意
final修飾基本類型變量,其值不能改變。final修飾引用類型變量,棧內存中的引用不能改變,但是所指向的堆內存中的對象的屬性值仍舊可以改變。
四、接口和抽象類的相同和不同之處
相同點
- 抽象類和接口均包含抽象方法
- 抽象類和接口都不能實例化
兩者的區別主要體現在兩個方面:語法方面和設計理念方面。
語法方面的區別是比較低層次的,非本質的。
不同點
- 接口中只能定義全局靜態常量。抽象類中可以定義常量和變量
- 接口中所有的方法都是全局抽象方法。抽象類中可以有0個、1個或多個,甚至全部都是抽象方法。
- 抽象類中可有構造方法,但不能實例化。接口中不能定義構造方法。
- 一個類只能有一個父類(可以是抽象類),但可以實現多個接口
二者的主要區別還是在設計理念上,其決定了某些情況下到底使用抽象類還是接口
- 抽象類體現了一種繼承關系,目的是復用代碼。父類和子類之間必須存在“is-a”的關系,即父類和子類在概念本質上應該是相同的。
- 接口定義了“做什么”,而實現類負責完成“怎么做”,體現了功能(規范)和實現分離的原則。接口和實現之間可以認為是一種“has-a”的關系