(三)Java入門 抽象類和介面

2021-08-10 11:06:16 字數 1088 閱讀 6082

抽象類(abstract)是對類的抽象,裡面可以包含抽象方法(只有宣告,沒有具體的實現),也可以包含正常類的變數,抽象類不能例項化,抽象類是為了子類繼承而存在的,子類必須繼承父類的抽象方法。

子類必須覆蓋抽象類中的所有抽象方法,才能進行例項化(否則,子類裡面還有繼承父類的抽象方法,所以子類是抽象函式,就不能例項化)。

1、抽象類有建構函式嗎?

有,可以用來給子類進行初始化。

2、抽象類可以不存在抽象方法嗎?

可以的。目的是不讓該類建立物件。

3、抽象關鍵字不可以和哪些關鍵字共存啊?

private不可以,如果方法都私有了,子類怎麼繼承啊。static不可以,如果修飾了方法,不能執行,為啥要定義這種。final修飾的方法不能覆蓋。

4、抽象類一定是父類;因為抽象類想被使用,必須有人去繼承並覆蓋其方法,子類才能進行例項化。

1、介面是對行為的抽象,介面中的變數被隱性制定為public static final,方法被制定為public abstract,所以方法是不具體實現的。子類可以實現多個介面內容,這叫「多實現」。implements.

2、介面不能例項化。只有子類覆蓋了介面中的所有抽象方法,子類才能進行例項化物件,否則,這個子類一定是個抽象類(因為裡面有抽象方法)。

3、本質上是提高子類的擴充套件性,讓子類可以實現更多功能的方法。

4、介面之間可以多繼承(為毛啊,因為不能多繼承的本質是容易造成方法體的不確定性,但是介面內沒有方法體,只有方法,所以,不存在不確定性)。

5、介面具有對外暴露的規則、功能擴充套件,降低耦合性、多實現。

例子:門都開和關的狀態,所以,可以把門的開關抽象為乙個抽象類;但是,不是所有的門都具有報警功能,所以,可以把報警抽象為介面,當做一種抽象的方法來實現。

繼承是乙個「是不是」的關係(共性關係),而介面實現則是「有沒有」的關係(額外功能)。如果乙個類繼承了某個抽象類,則子類必定是抽象類的種類,而介面實現則是有沒有、具備不具備的關係。

比如:乙個導盲犬,肯定是屬於犬類的,不能定義成犬的介面,因為犬類裡面還有一般實現方法,是共性關係。但是,可以把導盲定義為介面,這個是犬的額外功能。比如其他導盲裝置也可以去實現導盲功能啊。

Java 介面和抽象類

介面,inte ce,介面泛指供別人呼叫的方法和函式。介面的形式 public inte ce inte cename 介面的特點 1 介面中可以含有變數和方法。2 其中變數被隱式的指定為public static final 變數並且只能是這種變數。3 介面的方法隱式的指定為public abst...

java抽象類和介面

抽象類 乙個類中只要有乙個抽象方法 那麼這個類就必須是抽像的 抽象類必須要進行例項化 public abstract class animal class cat extends animal 介面 從本質上講介面是一種特殊的抽象類 介面中所有的方法都是抽象的 並且介面中的成員都是public 介面...

Java抽象類和介面

含有abstract修飾符的class即為抽象類,abstract類不能建立的例項物件。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。abstract class 類中定義抽象方法必須在具體 concrete 子類中實現,所以...