J2SE(九)Java之抽象類 介面

2021-07-11 05:26:13 字數 1370 閱讀 7872

一、抽象類

如果乙個類中包含抽象方法,則稱這個類為抽象類,抽象類必須在類前用abstract關鍵字修飾。

注:(1)如果乙個類在類前用abstract關鍵字修飾,沒有抽象方法,該類也是抽象類,這是一種較特別的情況。

(2)抽象類中含有無具體實現的方法,所以抽象類不能被例項化。

包含抽象方法的類稱為抽象類,但並不意味著抽象類中只能有抽象方法,它和普通類一樣,同樣可以擁有成員變數和普通的成員方法。注意,抽象類和普通類的主要有三點區別:

1)抽象方法必須為public或者protected(因為如果為private,則不能被子類繼承,子類便無法實現該方法),預設情況下預設為public。

2)抽象類不能用來建立物件(例項化);

3)如果乙個類繼承於乙個抽象類,則子類必須實現父類的抽象方法。如果子類沒有實現父類的抽象方法,則必須將子類也定義為為abstract類。

在其他方面,抽象類和普通的類並沒有區別

二、介面

在軟體工程中,介面泛指供別人呼叫的方法或者函式,它是對行為的抽象。介面中可以有變數和方法,介面中的變數會被隱式地指定為public static final變數(並且只能是public static final變數,用private修飾會報編譯錯誤),而方法會被隱式地指定為public abstract方法且只能是public abstract方法(用其他關鍵字,比如private、protected、static、 final等修飾會報編譯錯誤),並且介面中所有的方法不能有具體的實現,也就是說,介面中的方法必須都是抽象方法。從這裡可以隱約看出介面和抽象類的區別,介面是一種極度抽象的型別,它比抽象類更加「抽象」,並且一般情況下不在介面中定義變數。

三、介面抽象類區別

語法層面的區別:

(1)介面多實現、抽象類單一繼承

(2)介面只能存在抽象方法,抽象類可以有成員方法的實現,還可以有靜態**塊和靜態方法。

(3)介面的變數只能是public static final, 抽象類的成員變數可以是多種型別的

(4)抽象類為了**的復用,介面主要是為了實現多型 (5

)抽象類跟子類是一般或特殊關係,介面為其子類提供需要實現的規則

設計層面的區別:

(1)抽象類是對一種事物的抽象,即對類抽象,介面是對行為的抽象。

(2)繼承是一種是不是的關係,介面是一種有沒有的關係

(3)抽象類是一種模板式設計,介面是輻射式設計,抽象類改動,子類不一定需要改動,而介面改動,所有實現介面的類必須都改動

四、**

介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類

介面可以繼承介面。

抽象類可以實現(implements)介面

抽象類可繼承實體類,但前提是實體類必須有明確的建構函式。

參考:

J2SE 利用Java函式畫曲線

給大家介紹幾個方法畫數學上的三角函式的方法 public class function extends jframe public function override public void paint graphics g private void drawtanx generalpath gp,...

J2SE自學(三) Java語法基礎 二

1 陣列 陣列是乙個變數,儲存相同資料型別的一組資料 2 color red size large 陣列的注意事項 1 使用 new 關鍵字建立陣列 2 陣列既宣告又賦值 3 資料型別 陣列名 new int 4 資料型別 陣列名 5 陣列如果不賦初值必須宣告長度,如果賦初值不能給長度。6 leng...

Java 抽象類 介面

抽象類注重其是什麼以及其本質 介面注重具有什麼樣的功能以及充當什麼角色 抽象類使用abstract關鍵字來宣告,介面使用inte ce關鍵字來宣告 抽象類和介面都不能例項化,不能通過new來建立物件 抽象類的成員變數沒有任何限制 介面中的成員變數都是public static final 抽象類的方...