Java高階篇(二) 抽象類 內部類

2021-09-25 01:39:22 字數 1487 閱讀 9973

之前在類和物件中我們說到了類的普通特性,本篇將介紹類的一些高階特性。

一、抽象類

抽象類:抽象類是只宣告方法的存在而不去具體實現它的類。抽象類不能被例項化,也就是不能建立其物件。使用abstract關鍵字定義抽象類,直接上例子。

下面是乙個抽象類的定義,在class前直接加上abstract關鍵字。最後一句「public abstract void voice();」是乙個抽象方法,沒有實際意義,必須用子類重寫。需要注意的是,抽象方法只有方法的宣告,而沒有方法的實現,與介面類似,但是用abstract關鍵字修飾的。對於抽象方法前的修飾,不能使用private或static關鍵字。

abstract class animal 

public abstract void voice(); // 定義抽象方法

}

接下來實現一下抽象方法。方法是在抽象類的子類中通過重寫該方法實現抽象方法。

public class dog extends animal 

}public class cat extends animal

}

二、內部類

內部類:在乙個類中再定義乙個類,就將在類中再定義的那個類稱為內部類。分為成員內部類、區域性內部類以及匿名內部類。比如下方**就是成員內部類:

public class outerclass 

}

在內部類中可以直接使用外部類的類成員。

1. 區域性內部類與成員內部類

而區域性內部類是指在類的方法中定義的內部類,作用範圍為整個方法體。這裡就不舉例了,其實跟成員變數、區域性變數是乙個道理,區別在於作用範圍而已。成員內部類同理。

2. 匿名內部類

匿名內部類大量使用於圖形化程式設計的事件監控器**中,可以大大簡化**增強可讀性。顧名思義就是沒有名稱的類,可使用預設構造方法來生成匿名內部類的物件。在匿名內部類後需要加分號標識。比如後面在swing程式設計中,在編寫框體時,對滑鼠、鍵盤事件的引入就會用到匿名內部類,寫到那裡時再提及。

3. 靜態內部類

靜態內部類為在內部類前新增修飾符static。特點就是不可以使用外部類的非靜態成員。

4. 內部類的繼承

內部類也可以繼承,比如繼承classa類中的內部類classb,寫作「extends classa.classb」。但必須硬性給予這個類乙個帶引數的構造方法,並且該構造方法的引數為需要繼承內部類的外部類的引用,同時在構造方法體中使用a.super()語句,這樣才為繼承提供了必要的物件引用。下面看乙個例子。

1 public class example extends classa.classb 

5 }6 class classa

9 }**

java內部類與抽象類

內部類物件儲存了乙個對外部類物件的引用。outerclassname.this代表外部類物件的引用 innerclassname.this代表內部類物件的引用 class outer 在外部類中建立內部類物件 void funcouter class inner void funcinner 訪問內...

Java的抽象類和內部類

關鍵字為abstract 例如 abstract class fruit public abstract void harvest 抽象方法,沒有定義方法的實現 抽象方法 不能使用private或static關鍵字進行修飾 內部類定義 在乙個類中再定義乙個類,可分為成員內部類 區域性內部類 匿名內部...

Java語法 抽象類 介面 內部類

抽象類的意義在於 為子類提供統一的 規範的模板。子類必須實現抽象類的抽象方法。示例 抽象方法只有宣告,沒有實現 抽象方法只能在抽象類中 public abstract class animal public static void main string args class dogextends ...