java複雜奇葩的巢狀類和介面

eBusinessMan發表於2015-06-13

在Java語言中,介面可以巢狀在類或其它介面中。由於Java中interface內是不可以巢狀class的,所以介面的巢狀就共有兩種方式:class巢狀interface、interface巢狀interface。

1. class巢狀interface
這時介面可以是public,private和package的。重點在private上,被定義為私有的介面只能在介面所在的類被實現。可以被實現為public的類也可以被實現為private的類。當被實現為public時,只能在被自身所在的類內部使用。只能夠實現介面中的方法,在外部不能像正常類那樣上傳為介面型別。

2. interface巢狀interface
由於介面的元素必須是public的,所以被巢狀的介面自動就是public的,而不能定義成private的。在實現這種巢狀時,不必實現被巢狀的介面。

程式示例(摘抄改編自《Thinking in Java》):



其中語句A.D ad = a.getD()和a.getD().f()的編譯錯誤是因為D是A的私有介面,不能在外部被訪問。語句A.DImp2 di2 = a.getD()的錯誤是因為getD方法的返回型別為D,不能自動向下轉型為DImp2型別。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29900383/viewspace-1698150/,如需轉載,請註明出處,否則將追究法律責任。

相關文章