關於抽象類 抽象方法以及介面

2022-09-12 20:27:18 字數 1650 閱讀 9220

abstract修飾

抽象類不能被例項化,抽象類裡可以包含抽象方法也可以不包含;但有抽象方法的類必須是抽象類。

抽象類可以包含:

含有抽象方法的類,包括:

只能定義為抽象類。

利用抽象方法和抽象類的優勢,可以更好地發揮多型的優勢,使得程式更加靈活;

abstract和final不能同時修飾同乙個類或方法

當使用abstract修飾類時,表明這個類只能被繼承;

當使用abstract修飾方法時,表明這個方法必須由子類提供實現(即重寫)。

而final修飾的類不能被繼承,final修飾的方法不能被重寫,因此final和abstract不能同時使用。

abstract和static不能修飾同乙個方法,但它們可以同時修飾內部類。

abstract和private不能修飾同乙個方法。

abstract不能修飾成員變數、區域性變數,也不能修飾構造器。

抽象父類可以只定義需要使用的某些方法,把不能實現的部分抽象成抽象方法,留給子類去實現。

父類中可能包含需要呼叫其他方法的方法,這些被調方法既可以由父類實現,也可以由子類實現。父類裡提供的方法只是定義了乙個通用演算法,其實現也許並不完全由自身實現,而必須依靠於其子類的輔助。

介面定義了一種規範——某一批類所需要遵守的規範。介面不關心這些類的內部狀態資料,也不關心這些類裡方法的實現細節,它只規定這批類裡必須提供某些方法,提供這些方法的類就可滿足實際需要。

可見,介面是從多個相似類中抽象出來的規範,介面不提供任何實現。介面體現的是規範和實現分離的設計思想,是一種松耦合的設計。

[修飾符] inte***ce 介面名 extends 父介面1、父介面2...

對上面語法的詳細說明如下

修飾符可以是public或省略,如果是省略,則預設採用包許可權訪問控制符,只有相同包下的才可以訪問該介面。

介面名應與類名採用相同的命名規則,即如果僅從語法角度來看,介面名只要是合法的識別符號即可。

乙個介面可以有多個直接父介面,但介面只能繼承介面,不能繼承類。

由於介面定義的只是一種規範,因此介面裡不能包含構造器和初始化塊定義。

介面裡可以包含成員變數(只能靜態常量)、方法(只能是抽象例項方法,類方法,預設方法)、內部類(包括內部介面、列舉)定義。

由於介面裡定義的是多個類共同的公共行為規範,因此介面裡的所有成員,包括常量、方法、內部類和內部列舉都是public訪問許可權,定義介面成員時,可以省略訪問控制符,如果指定訪問控制符,則只能是public。

對於介面裡定義的靜態常量而言,它們是介面相關的,因此系統會自動為這些成員變數增加static和final兩個修飾符。

也就是說,在介面中定義成員變數時,不管是否使用public static final修飾符,介面裡的成員變數總是使用這三個來修飾。而且介面裡沒有構造器和初始化塊,因此介面裡定義的成員變數只能在定義時指定預設值。

對於介面裡定義的方法而言,如果不是定義預設方法(default)或類方法(static),系統將自動為普通方法增加abstract修飾符。

介面裡的普通方法不能有方法體;但類方法、預設方法必須有方法實現。

抽象類 抽象方法以及介面

抽象方法宣告語法 abstract void f 包含抽象方法的類叫做抽象類,如果乙個類包含乙個或多個抽象方法,該類必須被限定為抽象類,負責編譯器就會報錯。且抽象類不允許被建立物件。如果乙個類繼承自乙個抽象類,如果想建立此類的物件,就必須為父類 基類 中的抽象方法提供方法定義,否則此類只能被abst...

介面,抽象類,抽象方法

一.抽象方法 1.用abstract修飾 2.沒有方法體 二.抽象類 1.含有抽象方法的類叫抽象類 抽象類無法建立物件,只有被繼承並且覆蓋重寫後 去掉抽象 才能使用 三.介面 1.抽象方法 2.常量,常量必須是final的,比如電源中引數不能夠改變 3.預設 方法公升級用 4.靜態方法和私有方法 介...

介面以及抽象類

a 介面的格式 訪問修飾符 inte ce 介面名 a 抽象類的注意事項 1.抽象類可以繼承類或者抽象類。2.抽象類可以繼承類或者抽象類,同時再去實現介面。3.抽象類可以定義類和介面中所有的內容。抽象類是類和介面的整合 4.抽象類也是不能例項化物件的。d 繼承抽象類的格式 public class ...