抽象類最大的特點就是包含了抽象方法,而抽象方法是隻聲明而未實現(沒有方法體)的方法。抽象方法在定義時要使用abstract關鍵字完成,且一定要在抽象類之中;
定義一個抽象類:
abstract class A { private String info = "Hello World ." ; public void print() { System.out.println(info) ; } public abstract void get() ; //只聲明沒有方法體 } |
抽象類的使用原則:
·抽象類必須有子類,使用extends繼承,一個子類只能繼承一個抽象類;
·子類(如果不是抽象類)則必須覆寫抽象類之中的全部抽象方法;
·抽象類對象可以使用對象的向上轉型方式,通過子類來進行實例化操作。
使用抽象類:
abstract class A { private String info = "Hello World ." ; public void print() { System.out.println(info) ; } public abstract void get() ; // 只聲明沒有方法體 } class Impl extends A { public void get() { System.out.println("Hello MLDN .") ; } } public class Test { public static void main(String args[]) { A a = new Impl() ; //向上轉型 a.print() ; //自己類定義 a.get() ; //子類負責實現 } } |
1,抽象類不能使用fianl定義,因爲抽象類必須有子類,而final不能有子類;
2,抽象類中可以包含構造方法,因爲抽象類之中除了包含抽象方法之外,還包含了普通方法和屬性,而屬性一定要在構造方法執行完畢之後才能進行初始化操作;
3,抽象類中可以沒有抽象方法,但是反過來講,如果有抽象方法,則一定是抽象類,即使抽象類之中沒有抽象方法,也不能被直接實例化
4,如果定義的是外部抽象類,則不能使用static聲明,但如果定義的是內部抽象類,那麼這個內部的抽象類使用static聲明之後,就表示一個外部的抽象類。