課程
/后端開發(fā)
/Java
/Java入門第二季 升級版
請問成員內(nèi)部類和方法內(nèi)部類的區(qū)別是什么?好混亂
2015-03-02
源自:Java入門第二季 升級版 7-8
正在回答
1.成員內(nèi)部類:
class?Outer?{ ????class?Inner{ ???? ????} }
編譯上述代碼會產(chǎn)生兩個文件:Outer.class和Inner.class
2.方法內(nèi)部類:
把類放在方法內(nèi)
class?Outer?{ ????public?void?doSomething(){ ????????class?Inner{ ????????public?void?seeOuter(){ ????????} ????????} ????} }
(1)方法內(nèi)部類只能在定義該內(nèi)部類的方法內(nèi)實例化,不可以在此方法外對其實例化。
(2)方法內(nèi)部類對象不能使用該內(nèi)部類所在方法的非final局部變量。
因為方法的局部變量位于棧上,只存在于該方法的生命期內(nèi)。當一個方法結(jié)束,其棧結(jié)構(gòu)被刪除,局部變量成為歷史。但是該方法結(jié)束之后,在方法內(nèi)創(chuàng)建的內(nèi)部類對象可能仍然存在于堆中!如果對它的引用被傳遞到其他某些代碼,并存儲在一個成員變量內(nèi)。正因為不能保證局部變量的存活期和方法內(nèi)部類對象的一樣長,所以內(nèi)部類對象不能使用它們。
慕后端0385330 提問者
成員內(nèi)部類是直接定義在類中的類,和成員變量和方法并列;而方法內(nèi)部類是定義在方法中的類。例如:
class?Outter{ ????private?int?id; ????//?這個是成員內(nèi)部類,與成員變量和方法地位同等 ????class?MemberInner{ ????????…… ????} ????private?void?say(){ ????????…… ????} ????private?void?print(){ ????????//?這個是方法內(nèi)部類,定義在方法內(nèi)部 ????????class?MethodInner{ ????????????…… ????????} ????} }
舉報
課程升級!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會Java面向?qū)ο缶幊痰膴W妙
1 回答外部類怎么調(diào)用內(nèi)部類的成員和方法
2 回答內(nèi)部類分為:成員內(nèi)部類,方法內(nèi)部類,靜態(tài)內(nèi)部來,匿名內(nèi)部類,沒理解透
3 回答靜態(tài)內(nèi)部類和成員內(nèi)部類有區(qū)別嗎?調(diào)用兩者中的方法不一樣是嗎?如何區(qū)別?
4 回答靜態(tài)內(nèi)部類和全局內(nèi)部類的區(qū)別
2 回答內(nèi)部類和子類有什么區(qū)別?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2015-03-02
1.成員內(nèi)部類:
編譯上述代碼會產(chǎn)生兩個文件:Outer.class和Inner.class
2.方法內(nèi)部類:
把類放在方法內(nèi)
(1)方法內(nèi)部類只能在定義該內(nèi)部類的方法內(nèi)實例化,不可以在此方法外對其實例化。
(2)方法內(nèi)部類對象不能使用該內(nèi)部類所在方法的非final局部變量。
因為方法的局部變量位于棧上,只存在于該方法的生命期內(nèi)。當一個方法結(jié)束,其棧結(jié)構(gòu)被刪除,局部變量成為歷史。但是該方法結(jié)束之后,在方法內(nèi)創(chuàng)建的內(nèi)部類對象可能仍然存在于堆中!如果對它的引用被傳遞到其他某些代碼,并存儲在一個成員變量內(nèi)。正因為不能保證局部變量的存活期和方法內(nèi)部類對象的一樣長,所以內(nèi)部類對象不能使用它們。
2015-03-02
成員內(nèi)部類是直接定義在類中的類,和成員變量和方法并列;而方法內(nèi)部類是定義在方法中的類。例如: