-
類庫
鎖定
- 中文名
- 類庫
- 外文名
- Class Library
- 所屬學科
- 計算機科學
- 包 括
- 接口、抽象類和具體類
- 專 用
- 開發任務
類庫定義
類庫特點
類庫抽象類
在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,並不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。父類包含了子類集合的常見的方法,但是由於父類本身是抽象的,所以不能使用這些方法。
在Java中抽象類表示的是一種繼承關係,一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。
抽象類除了不能實例化對象之外,類的其它功能依然存在,成員變量、成員方法和構造方法的訪問方式和普通類一樣。
由於抽象類不能實例化對象,所以抽象類必須被繼承,才能被使用;但是抽象類可以派生子類。抽象類的子類必須給出抽象類中的抽象方法的具體實現,除非該子類也是抽象類。也是因為這個原因,通常在設計階段決定要不要設計抽象類。
抽象類可能含有抽象方法,也可能沒有,但抽象類中可以含有非抽象的方法。如果一個類含有抽象方法,那麼這個類必須被聲明為抽象類abstract
(2)抽象類的格式:
abstract class 抽象類名{ }
(3)抽象方法:
如果某個方法被聲明,但是沒有被實現(即沒有花括號、方法體,聲明後面直接就是分號),那麼該方法被稱為“抽象方法”。
抽象類的子類必須給出抽象類中的抽象方法的具體實現,除非該子類也是抽象類。
例如:abstract void abstractMethod( );
抽象類中不一定包含抽象方法,但是有抽象方法的類必定是抽象類。抽象類中的抽象方法只是聲明,不包含方法體,就是不給出方法的具體實現,也就是方法的具體功能。
構造方法,類方法(用 static 修飾的方法)不能聲明為抽象方法。
修飾符static和abstract不能一起使用。如果某個方法聲明為抽象的,就不能聲明為靜態的。如果某個方法聲明為靜態的,就不能聲明為抽象的。
類庫嵌套類
在一個Java類體中定義另一個類叫作嵌套類。擁有嵌套類的類叫外圍類或者外部類。
class OuterClass{
class NestedClass{ }
}
嵌套類分為靜態嵌套類和動態嵌套類。用static修飾的嵌套類叫做“靜態嵌套類”,沒有用static修飾的嵌套類叫做“非靜態嵌套類”,也叫做內部類。
(1)靜態嵌套類:
如果要為靜態嵌套類創建對象,則使用以下語法:
OuterClass.StaticNestedClass nestedObject =newOuterClass.StaticNestedClass( );
使用靜態嵌套類對象來訪問外部類的實例變量和實例方法。例如:OuterClass.StaticNestedClass
(2)非靜態嵌套類(內部類)
內部類不能定義任何靜態成員,內部類的實例化對象存在於外部類的實例化對象中。要實例化一個內部類,必須先實例化其外部類。
OuterClass.InnerClass innerObject =newOuterClass.InnerClass( );
它又可以分為以下三種:成員內部類(Member inner class)、匿名內部類(Anonymous inner class)、局部內部類(Local inner class)
public class AnonymousInner { public static void main(String[] args){ // 使用匿名內部類實例化抽象類Person Person p = new Person() { void create() {System.out.println(str);} }; p.create(); Animal a = new Animal() { public void run(){System.out.println("匿名內部類通過接口創建對象");} }; a.run(); } } abstract class Person { String str = "匿名內部類通過抽象類創建對象"; abstract void create(); } interface Animal{ void run(); }