java中的nested-class和inner-class
阿新 • • 發佈:2018-12-26
參考了這篇文章:
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
nested-class和inner-class的區別:
Nested classes are divided into two categories: static and non-static. Nested classes that are declared
static
are simply called static nested classes. Non-static nested classes are called
inner classes.
因此下例中StaticNestedClass是巢狀類,InnerClass是內部類。
class OuterClass {
...
static class StaticNestedClass {
...
}
class InnerClass {
...
}
}
nested-class和inner-class都是外層類的成員變數。只不過一個是靜態的,一個是非靜態的。
因此,nested-class和inner-class都可以被宣告為private,public,protested或package private (這裡回憶一下,普通的class在宣告時只能是public或package private的)。
但是有靜態和非靜態的不同可知:nested-class是和類相關的,而inner-class是和例項相關的。因此可以不例項化物件,就直接訪問nested-class,而必須例項化類才能訪問inner-class。而nested-class不能訪問外層類的其他成員變數或方法,而inner-class則可以。
這裡還有一個有意思的事:因為inner-class是非靜態成員變數,因此inner-class中不能再定義靜態變數或方法了。