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