簡體   English   中英

創建靜態抽象類的實例

[英]Creating instance of static abstract class

我知道抽象類無法實例化。 但我對下面的代碼有疑問。 此代碼是android位圖趣味演示的一部分( http://commondatastorage.googleapis.com/androiddevelopers/shareables/training/BitmapFun.zip )。

// ImageWorkerAdapter class is nested in another abstract class ImageWorker
public static abstract class ImageWorkerAdapter
{
public abstract Object getItem(int num);
public abstract int getSize();
}

//this snippet is seen in Images.java
public final static ImageWorkerAdapter imageWorkerUrlsAdapter = new ImageWorkerAdapter() { 
@Override
public Object getItem(int num) {
return Images.imageUrls[num];
}

我無法理解如何創建抽象類的實例。 請幫我理解這段代碼。

此代碼表示擴展ImageWorkerAdapter抽象類的匿名類的初始化:

new ImageWorkerAdapter() { 
    @Override
    public Object getItem(int num) {
    return Images.imageUrls[num];
}

實際上, 匿名實現是在花括號之間定義的。

作為一個匿名類,依賴於抽象類或接口是完全有效的。

您顯示的代碼不顯示正在實例化的抽象類。

它顯示了一個實例化的匿名類 在這種情況下,匿名類擴展了一個抽象類。 您還可以在匿名類中實現接口, Runnable是一個非常常見的示例。

您的代碼不會實例化抽象類,而是定義新的匿名抽象類,其中包括擴展和實現(覆蓋)其他抽象類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM