如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。
抽象類除了不能實例化對象之外,類的其它功能依然存在,成員變量、成員方法和構造方法的訪問方式和普通類一樣。
由于抽象類不能實例化對象,所以抽象類必須被繼承,才能被使用。
在java語言中使用abstract class來定義抽象類。
抽象方法
如果你想設計這樣一個類,該類包含一個特別的成員方法,該方法的具體實現由它的子類確定,那么你可以在父類中聲明該方法為抽象方法。
Abstract關鍵字同樣可以用來聲明抽象方法,抽象方法只包含一個方法名,而沒有方法體。
抽象方法沒有定義,方法名后面直接跟一個分號,而不是花括號。
聲明抽象方法會造成以下兩個結果:
如果一個類包含抽象方法,那么該類必須是抽象類。
任何子類必須重寫父類的抽象方法,或者聲明自身為抽象類。繼承抽象方法的子類必須重載該方法。否則,該子類也必須聲明為抽象類。最終,必須有子類實現該抽象方法,否則,從最初的父類到最終的子類都不能用來實例化對象。
接口(英文:Interface),在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。
接口并不是類,編寫接口的方式和類很相似,但是它們屬于不同的概念。類描述對象的屬性和方法。接口則包含類要實現的方法。
接口無法被實例化,但是可以被實現。一個實現接口的類,必須實現接口內所描述的所有方法,否則就必須聲明為抽象類。另外,在Java中,接口類型可用來聲明一個變量,他們可以成為一個空指針,或是被綁定在一個以此接口實現的對象。
接口與類相似點:
一個接口可以有多個方法。
接口文件保存在.java結尾的文件中,文件名使用接口名。
接口的字節碼文件保存在.class結尾的文件中。
接口相應的字節碼文件必須在與包名稱相匹配的目錄結構中。
接口與類的區別:
接口不能用于實例化對象。
接口沒有構造方法。
接口中所有的方法必須是抽象方法。
接口不能包含成員變量,除了static和final變量。
接口不是被類繼承了,而是要被類實現。
接口支持多重繼承。
接口的聲明
接口的聲明語法格式如下:
[可見度] interface 接口名稱 [extends 其他的類名] { // 聲明變量 // 抽象方法}Interface關鍵字用來聲明一個接口。下面是接口聲明的一個簡單例子。
/* 文件名 :NameOfInterface.java */import java.lang.*;//引入包 public interface NameOfInterface{ //任何類型 final, static 字段 //抽象方法}接口有以下特性:
接口是隱式抽象的,當聲明一個接口的時候,不必使用abstract關鍵字。
接口中每一個方法也是隱式抽象的,聲明時同樣不需要abstract關鍵子。
接口中的方法都是公有的。
新聞熱點
疑難解答