一、抽象類定義
抽象類指包含抽象方法的類叫抽象類,抽象類必須用關鍵字abstract修飾。
public abstract class a
a ()
public void action()
//抽象方法
public abstract void fun();
}
二、抽象類的使用
1.抽象類不能直接例項化,需要子類繼承父類向上轉型例項化物件。
2.乙個子類只能繼承(extends)單一的父類。
3.子類必須強制覆寫父類的抽象方法,普通方法可選擇覆寫。
範例:
abstract class a
public abstract void print();//抽象方法,沒有方法體,有abstract關鍵字做修飾
}//單繼承
class b extends a
}public class testdemo
}
現在就可以清楚的發現:
(1)抽象類繼承子類裡面有明確的方法覆寫要求,而普通類可以有選擇性的來決定是否需要覆寫;
(2)抽象類實際上就比普通類多了一些抽象方法而已,其他組成部分和普通類完全一樣;
(3)普通類物件可以直接例項化,但抽象類的物件必須經過向上轉型之後才可以得到。
三、抽象類的使用限制
(1)抽象類中有構造方法麼?
由於抽象類裡會存在一些屬性,那麼抽象類中一定存在構造方法,其存在目的是為了屬性的初始化。
並且子類物件例項化的時候,依然滿足先執行父類構造,再執行子類構造的順序。
範例
abstract class a
public abstract void print();//抽象方法,沒有方法體,有abstract關鍵字做修飾
}//單繼承
class b extends a
@override
public void print()
}public class testdemo
}
(2)抽象類可以用final宣告麼?
不能,因為抽象類必須有子類,而final定義的類不能有子類;
(3)抽象類能否使用static宣告?
外部抽象類不允許使用static宣告,而內部的抽象類執行使用static宣告。使用static宣告的內部抽象類相當於乙個外部抽象類,繼承的時候使用「外部類.內部類」的形式表示類名稱。
(4)可以直接呼叫抽象類中用static宣告的方法麼?
任何時候,如果要執行類中的static方法的時候,都可以在沒有物件的情況下直接呼叫,對於抽象類也一樣。
(5)有時候由於抽象類中只需要乙個特定的系統子類操作,所以可以忽略掉外部子類。這樣的設計在系統類庫中會比較常見,目的是對使用者隱藏不需要知道的子類。
package com.demo;
/** * created by ranjx on 2018/7/22.
*/public abstract class e
}public static e getinstance()
public static void main()
}
Java 抽象類詳解
三 抽象類總結 重點知識 例項化物件 newperoson vince vu 測試類 這裡p是乙個抽象類person的變數,person引用了乙個非抽象子類student的例項 public class test 上面中你可能會有個疑問,這不是呼叫了乙個沒有定義的方法嗎 p.getdescripti...
java抽象類抽象方法
抽象類 使用abstract關鍵字修飾的class,稱為抽象類 1 抽象類無法例項化 抽象方法 使用abstract關鍵字修飾的方法且沒有實現 有宣告無實現 稱為抽象方法 1 eg public abstract void method 2 沒有 3 抽象方法需要定義在抽象類中 抽象類和抽象方法 1...
抽象類 抽象方法詳解
抽象類 用abstract關鍵字來修飾乙個類時,這個類叫做抽象類 1,含有抽象方法的類就叫抽象類。2,抽象類中的抽象方法必須被實現!3,如果乙個子類沒有實現父類中的抽象方法,則子類也成為了乙個抽象類!4,抽象類中的普通方法,可以不必實現。2.方法 1,含有抽象方法的類就叫抽象類。2,抽象類中的抽象方...