Static Nested Class 和 Inner Class的不同


Nested Class 一般是C++的說法,Inner Class 一般是JAVA的說法。 
Nested class分為靜態Static nested class 的和非靜態的 inner class, 
靜態的Static nested class是不可以直接調用它的外部類enclosing class的,但是可以通過外部類的引用來調用,就像你在一個類中寫了main方法一樣。 
非靜態類inner class 可以自由的引用外部類的屬性和方法,但是它與一個實例綁定在了一起,不可以定義靜態的屬性、方法 。 
Inner Class(內部類)定義在類中的類。 
Nested Class(嵌套類)是靜態(static)內部類。1. 要創建嵌套類的對象,並不需要其外圍類的對象。 2. 不能從嵌套類的對象中訪問非靜態的外圍類對象。 
Anonymous Inner Class (匿名內部類)匿名的內部類是沒有名字的內部類。 
匿名的內部類不能extends(繼承)其它類,但一個內部類可以作為一個接口,由另一個內部類實現。 

嵌套類可以作為接口的內部類。正常情況下,你不能在接口內部放置任何代碼,但嵌套類可以作為接口的一部分,因為它是static 的。只是將嵌套類置於接口的命名空間內,這並不違反接口的規則。

 

靜態方法是不能繼承的,因為它是靜態的,所謂靜態當然是時間和空間的靜止嘍.

然后final是java里面定義的,不能被重載的函數。 

java里面的函數如果沒有特別標識,只要在子類中定義了一個同名的函數,那么父類的函數就被重載掉了。如果new一個子類的對象給父類再調用這個函數,就是調用子類的了。只有new的是父類的調的才是父類的。  java里面沒有virtual的說法,因為不是final或static就是virtual的。  abstract是虛函數,自然不可能是final的,同時如上所說,static是不能被重載只能被覆蓋的,所以也不可以是abstract的 。

 

在使用匿名內部類時,要記住以下幾個原則:    ·匿名內部類不能有構造方法。      ·匿名內部類不能定義任何靜態成員、方法和類。      ·匿名內部類不能是public,protected,private,static。      ·只能創建匿名內部類的一個實例。         ·一個匿名內部類一定是在new的后面,用其隱含實現一個接口或實現一個類。      ·因匿名內部類為局部內部類,所以局部內部類的所有限制都對其生效。  
匿名類和內部類中的中的this :  有時候,我們會用到一些內部類和匿名類。當在匿名類中用this時,這個this則指的是匿名類或內部類本身。 這時如果我們要使用外部類的方法和變量的話,則應該加上外部類的類名。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM