/*內部類向上轉型為介面
如果將乙個許可權修飾符為private的內部類向上轉型為其父類物件,或者直接向上轉型為乙個介面,
在程式中就可以完全隱藏內部類的具體實現過程。可以在外部提供乙個介面,在介面中宣告乙個方法。
如果在實現該介面的內部類中實現該介面的方法,就可以定義多個內部類以不同的方式實現介面中的
同乙個方法*/
inte***ce outinte***ce //定義乙個介面
class outerclass
public void f()
}//定義乙個方法,返回值型別為outinte***ce介面 可以被繼承下去
public outinte***ce doit()
}public class inte***ceinner }/*
outerclass類中定義了乙個修飾許可權為private的內部類,這個內部類實現了outinte***ce介面,
然後修改doit()方法,使該方法返回乙個outinte***ce介面。由於內部類innerclass修飾許可權為
private,所以除了outerclass類可以訪問該內部類之外,其他類都不能訪問,而可以訪問doit()方法。
由於該方法返回乙個外部介面型別,這個介面可以作為外部使用的介面。如果某個類繼承了外部類,
由於內部的許可權不可以向下轉型為內部類innerclass,同時也不能訪問f()方法,但是卻可以訪問介面
中的f()方法。
例如,inte***ceinner類中最後一句outinter.f();介面引用呼叫f()方法,從執行的結果可以看出,這條
語句執行的是內部類中的f()方法,很好地對繼承該類的子類隱藏了實現細節,僅為編寫子類的人留下乙個
介面和乙個外部類,同時也可以呼叫f()方法,但是f()方法的具體實現過程卻被很好地隱藏了*/
內部類與向上轉型
通過乙個題來解釋 在第乙個包中建立乙個至少有乙個方法的介面。然後在第二個包內建立乙個類,在其中增加乙個protected的內部類以實現那個介面。在第三個包中,繼承這個類,並在乙個方法中返回該protected內部類的物件,在返回的時候向上轉型為第乙個包中的介面的型別。下面是程式 packagepac...
從頭認識java 8 4 內部類與向上轉型
這一章節我們來討論一下內部類與向上轉型。跟普通的類一樣,內部類也可以實現某個介面然後向上轉型。為什麼?因為這樣能夠更好的隱藏實現的細節,基本其他程式設計師使用繼承來擴充套件介面和方法都不能訪問相關實現。package com.ray.ch03 public class test public per...
介面與內部類
本文目錄 2宣告實現介面的類 3介面是多繼承的 4介面是引用資料型別 介面定義介面 inte ce 是一組抽象方法 常量 和內嵌型別的集合。介面是一種資料型別,採用抽象形式描述約定。被類實現之後才有意義。乙個介面可被多個類實現。1.1宣告介面 使用關鍵字inte ce宣告介面,語法格式如下 publ...