抽象類
介面
定義
含有抽象方法的類。
宣告方法的存在而不去實現。
不允許直接用來建立物件,作用是為一些相關的類提供公共基類和為下層相關子類提供一些公用方法的實現**,減少**冗餘。
抽象類一特例,介面的所有方法都必須是抽象的。
定義僅是實現某種特定功能的一組對外介面和規範,而功能的真正實現是在繼承介面的各類中完成的。
自身
可實現介面,可繼承實體類(有建構函式)
可繼承介面
關係
是is-a關係
是has-a關係
相同點1
兩者都是抽象類,都不能例項化
兩者都是抽象類,都不能例項化
相同點2
子類必須要實現已經宣告的抽象方法
子類都必須要實現已經宣告的抽象方法
abstract,子類單繼承
inte***ce,子類多實現
用於抽象
用於抽象,抽象類的抽象
abstract class強調所屬關係
inte***ce強調特定功能的實現
子類
如果子類沒有實現抽象父類的所有抽象方法,那麼子類也必須定義為抽象型別。
即:子類為非抽象類則必須實現父類的所有抽象方法。子類為抽象類則無必要。
實現介面的非抽象類一定要實現介面裡定義的所有方法。
內部結構1
抽象類中可以包含抽象方法,也可以有非抽象方法,但是有抽象方法的類一定是抽象類,而抽象類未必要有抽象方法。
可有內部類,可有靜態main方法
有方法必為抽象方法,也可無抽象方法。
介面中一般定義的是常量和抽象方法。
可定義內部類,但內部類必須是public static型別的。可是抽象類,不要求是final型別的
內部結構2
變數預設是 friendly 型,其值可以在子類中重新定義,也可以重新賦值。
類不能例項化,方法只能在子類中實現
abstract不能與final並列修飾同乙個類。
不能有抽象構造方法或抽象靜態方法。
抽象類中可以定義成員變數
abstract關鍵字只能修飾類和方法,不能修飾字段
abstract 不能與private、static、final或native並列修飾同乙個方法。
方法只能定義抽象方法而且預設是public
介面中定義的成員變數實際上都是常量
介面的所有方法訪問許可權自動被宣告為public
方法定義型別預設為public abstract
成員變數型別預設為public static final(不管有沒有這些修飾符,方法和常量預設具這種屬性)。
介面中定義的變數預設是public static final 型,且必須給其初值,實現類中不能重新定義,不能改變其值。
介面類定義不能使用final修飾符
介面類都是abstract的,即使定義類時,沒顯示宣告
內部結構3
可有非抽象方法,可有私有變數和私有方法。
abstract類中定義抽象方法必須在具體子類中實現。所以,不能有抽象構造方法或抽象靜態方法,
不能有私有方法或變數,因為介面是公開的,讓別人使用的。
介面與抽象類
介面與抽象類區別 個人總結 語法結構 1 型別可以繼承多個介面,但是只能繼承乙個抽象類,即不支援多重繼承。2 介面可以用於值型別和引用型別,例如struct和class,而抽象類不能用於值型別,只能用於引用型別。3 抽象類定義可以包括建構函式,字段資料,非抽象成員 具體實現 等,而介面只能包括抽象成...
介面與抽象類
抽象類 當抽象類作為父類時,他的子類對其中的抽象類方法有不同的方法體 簡單舉例為 classhorse mammal,ilangbound public int numeroflegs return 4 inte ce ilandbound int numberoflegs 介面例子 main函式 ...
抽象類與介面
記住抽象類與普通類的唯一區別就是不能建立例項物件和允許有abstract 方法含有abstract 修飾符的 class 即為抽象類,abstract 類不能建立的例項物件。含有 abstract 方法的類必須定義為 abstract class abstract class 類中的方法不必是抽象的...