抽象類:
- 概念:
Java 中允許用戶創(chuàng)建一個起“模板”作用的類,稱為“抽象類”(abstract class)颜曾,目的是可以根據(jù)它的格式來創(chuàng)建和修改新的類臀叙。
2.定義及使用:
抽象類是以 abstract 修飾的類劝萤,定義抽象類的語法格式如下:
abstract class 類名稱
{
聲明成員變量鳖谈;
返回值的數(shù)據(jù)類型 方法名(參數(shù)表)
{
...
}
abstract 返回值的數(shù)據(jù)類型 方法名(參數(shù)表);
//在抽象方法里,不能定義方法體
}
eg:
注意??:
1)不能直接由抽象類創(chuàng)建對象幢码,只能通過抽象類派生出新的子類症副,再由其子類創(chuàng)建對象店雅。也就是說抽象類不能用 new 運算符來創(chuàng)建實例對象的類,它可以作為父類被它的所有子類共享瓦糕。
2)抽象方法聲明中修飾符 abstract 和 static, private, native 不能并列修飾同一個方法底洗。
3)一個類不能既是最終類,又是抽象類咕娄,即 abstract類不能用 final 來修飾亥揖。
4)抽象類中不一定包含抽象方法,但包含抽象方法的類一定要聲明為抽象類,而定義定義為抽象的方法必須在子類派生時被覆蓋费变。
接口:
- 接口的結(jié)構(gòu)與抽象類非常相似摧扇,也具有數(shù)據(jù)成員與抽象方法,但它與抽象類有以下不同:
a. 接口的數(shù)據(jù)成員都是靜態(tài)的且必須初始化,且其初值不能修改挚歧。
b. 接口中的方法必須全部聲明為 abstract 扛稽。
2.接口的定義方法:
[public] interface 接口名稱 [extends 父接口名列表]
{
[public] [static] [final] 數(shù)據(jù)類型 成員變量名 = 常量;
...
[public] [abstract] 返回值的數(shù)據(jù)類型 方法名(參數(shù)表)滑负;
...
}
-
接口的實現(xiàn)與引用:
接口只需聲明而不用定義方法體在张,所以接口與抽象類一樣不能用 new 運算符直接創(chuàng)建對象,而是利用接口的特性創(chuàng)建一個新類矮慕,用它來創(chuàng)建對象帮匾。該過程被稱為接口的實現(xiàn),接口的實現(xiàn)需要在聲明一個類的同時使用關(guān)鍵字 implements痴鳄,接口實現(xiàn)的語法格式為:
class 類名稱 implements 接口表
{
...
}
eg:
Xnip2019-08-12_19-15-22.png
注意??:
1)如果實現(xiàn)某接口的類不是 abstract 的抽象類瘟斜,則在類的定義部分必須實現(xiàn)指定接口的所有抽象方法。
2)一個類在實現(xiàn)某接口的抽象方法時必須使用完全相同的方法頭痪寻。
3)接口中抽象類的訪問控制符都已指定為 public 螺句,所以類在實現(xiàn)方法時必須顯示的使用 public 修飾符。
-
接口的繼承:
一個接口可以有一個以上的父接口橡类,它們之間用逗號隔開蛇尚,形成父接口列表,新接口將繼承所有父接口的變量與方法顾画。如果子接口中定義了與父接口同名的常量或者相同的方法佣蓉,則父接口中的常量將被隱藏,方法將被覆蓋亲雪。
Xnip2019-08-12_19-41-14.png -
利用接口實現(xiàn)類的多重繼承:
一個類只能有一個直接父類,但它可以同時實現(xiàn)多個接口疚膊。一個類在實現(xiàn)多個接口時义辕,在 implements 子句中用逗號分隔個接口名。
Xnip2019-08-12_20-11-58.png
創(chuàng)建一個方便測量代碼塊執(zhí)行效率的模板
今日總結(jié)感悟:今天突然感到一陣莫名的興趣寓盗,有那么一點領(lǐng)悟了什么的驚奇之感灌砖,雖然很多內(nèi)容還是不能消化透,理解了的也還無法熟練使用傀蚌,但是我感覺好像這扇門正在慢慢打開基显,也許不久之后情況就完全不同了。