亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請問成員內部類和方法內部類的區別是什么?好混亂

請問成員內部類和方法內部類的區別是什么?好混亂

正在回答

2 回答

1.成員內部類:

class?Outer?{
????class?Inner{
????
????}
}

編譯上述代碼會產生兩個文件:Outer.class和Inner.class


2.方法內部類:

把類放在方法內

class?Outer?{
????public?void?doSomething(){
????????class?Inner{
????????public?void?seeOuter(){
????????}
????????}
????}
}

(1)方法內部類只能在定義該內部類的方法內實例化,不可以在此方法外對其實例化。

(2)方法內部類對象不能使用該內部類所在方法的非final局部變量。

因為方法的局部變量位于棧上,只存在于該方法的生命期內。當一個方法結束,其棧結構被刪除,局部變量成為歷史。但是該方法結束之后,在方法內創建的內部類對象可能仍然存在于堆中!如果對它的引用被傳遞到其他某些代碼,并存儲在一個成員變量內。正因為不能保證局部變量的存活期和方法內部類對象的一樣長,所以內部類對象不能使用它們。


1 回復 有任何疑惑可以回復我~
#1

慕后端0385330 提問者

謝謝你
2015-03-06 回復 有任何疑惑可以回復我~

成員內部類是直接定義在類中的類,和成員變量和方法并列;而方法內部類是定義在方法中的類。例如:

class?Outter{
????private?int?id;
????//?這個是成員內部類,與成員變量和方法地位同等
????class?MemberInner{
????????……
????}
????private?void?say(){
????????……
????}
????private?void?print(){
????????//?這個是方法內部類,定義在方法內部
????????class?MethodInner{
????????????……
????????}
????}
}


0 回復 有任何疑惑可以回復我~
#1

慕后端0385330 提問者

謝謝你
2015-03-06 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

請問成員內部類和方法內部類的區別是什么?好混亂

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號