內部類分類
/**
* 〈一句話功能簡述〉
* * @author hjsjy
* @create 2018/10/8
* @since 1.0.0
*/public
class
outerclass
public string getname()
public
void
setname
(string name)
public
intgetage()
public
void
setage
(int age)
public
class
innerclass
public outerclass getouterclass()
public
void
display()
}public
static
void
main
(string[
] args)
}
外部類.
this
.成員變數
外部類.
this
.成員方法
public
class
circle
class
draw
}}
外部類想訪問成員內部類的成員,要先建立乙個成員內部類的物件
class
circle
private draw getdrawinstance()
class
draw
}}
成員內部類是依附外部類而存在的,建立成員內部類的物件,前提是必須存在乙個外部類的物件
public
class
test
}class
outter
public inner getinnerinstance()
class
inner
}}
內部類可以擁有private訪問許可權、protected訪問許可權、public訪問許可權及包訪問許可權。比如上面的例子,如果成員內部類inner用private修飾,則只能在外部類的內部訪問,如果用public修飾,則任何地方都能訪問;如果用protected修飾,則只能在同乙個包下或者繼承外部類的情況下訪問;如果是預設訪問許可權,則只能在同乙個包下訪問。這一點和外部類有一點不一樣,外部類只能被public和包訪問兩種許可權修飾。我個人是這麼理解的,由於成員內部類看起來像是外部類的乙個成員,所以可以像類的成員一樣擁有多種許可權修飾
區域性內部類是頂乙個方法或者乙個作用域裡面的類
與成員內部類的區別:區域性內部類的訪問僅限於方法內或者該作用域內。
class
people
}class
manpublic people getwoman()
return
newwoman()
;}}
區域性內部類就像方法裡面的一句不變數一樣,是不能有public protected private 以及static修飾符的
public
abstract
class
bird
public
void
setname
(string name)
public
abstract
intfly()
;}public
class
test
public
static
void
main
(string[
] args)
public string getname()
});}
}
靜態內部類也是定義在另乙個類裡面的類,只不過在類前面加了乙個關鍵字static。靜態內部類是不需要依賴於外部類的,這點和類的靜態成員屬性有點類似,並且它不能使用外部類的非static成員變數或者方法。
public
class
test
}class
outter
static
class
inner
}}
class
outter
static
class
inner
}}
本文參考: 學習內部類的總結
public class testinnerstatic public static void main string args 內部類宣告成static就相當於乙個外部類 預設的內部類是default型別,也就是friendly,只能在包內訪問,所以如果你把內部類宣告成public,就可以在包外訪...
內部類總結
1內部類的巢狀可以理解成類的鏈關係,在構造乙個內部類 非static 的例項的時候,會將直接外層類的例項 作為引數傳進建構函式,而外層類的例項也是用其外層類的例項構造,所以是一種鏈狀關係,內部的類可以使用所有 外層的類的例項,而外層的類不能使用內層的類,應用a.this 最外層類例項 a.b.c.t...
內部類總結
內部類不是很好理解,但說白了其實也就是乙個類中還包含著另外乙個類 如同乙個人是由大腦 肢體 器官等身體結果組成,而內部類相當於其中的某個器官之一,例如心臟 它也有自己的屬性和行為 血液 跳動 顯然,此處不能單方面用屬性或者方法表示乙個心臟,而需要乙個類 而心臟又在人體當中,正如同是內部類在外部內當中...