第一個圖代碼為啥運行不起來
package com.imooc;
import com.imooc.HelloWorld.Outer.Inner;
public class HelloWorld{
?? ?public? class Outer{
?? ?private?? ?int a = 99;
?? ?public class Inner {
?? ??? ?int b = 2;
?? ??? ?public void test() {
?? ??? ??? ?System.out.println("訪問外部類中的a:"+a);
?? ??? ??? ?System.out.println("訪問內部類中的b:"+b);
?? ??? ?}
?? ??? ?
?? ?}
?? ?
???? public static void main (String[] args){
?? ?Outer o = new Outer();
?? ?Inner i = o.new Inner();
?? ?i.test();
}
?? ?}
}
???
2019-07-24
多層嵌套內部類這樣的,可以這樣寫
//外部類HelloWorld public?class?HelloWorld{ ???? ????//外部類的私有屬性name ????private?String?name?=?"imooc"; ???? ????//外部類的成員屬性 ????int?age?=?20; ????//成員內部類Outer ????public?class?Outer?{ ????????//Outer類的成員屬性 ????????String?name="第二遍我愛慕課!"; ????????//成員內部類Inner ????????public?class?Inner?{ ????????????String?name?=?"愛慕課"; ????????????//內部類中的方法 ????????????public?void?show()?{? ????????????????System.out.println("HelloWorld外部類中的name:"?+?HelloWorld.this.name?); ????????????????System.out.println("Outer外部類中的name:"?+??Outer.this.name?); ????????????????System.out.println("內部類中的name:"?+???this.name?); ????????????????System.out.println("外部類中的age:"?+?age); ????????????} ????????} ?????} ???? ???? ????//測試成員內部類 ????public?static?void?main(String[]?args)?{ ???????? ????????//創建外部類的對象 ????????HelloWorld?o?=?new?HelloWorld?();? ???????? ????????//創建內部類的對象 ????????Outer?out?=?o.new?Outer(); ????????Outer.Inner?inn?=?out.new?Inner();//此處直接寫Inner類型是報錯的,因為Inner類還在Outer類的內部 ????????//調用內部類對象的show方法 ????????inn.show(); ????} }2019-07-24
你這里有三個類
HelloWorld類?? 包含 Outer類? 包含? Inner類
是順序關系,你的類嵌套三層
要在HelloWorld類里去調用最里層的Inner類的方法
先實例化HelloWorld類,再實例化Outer類,再實例化Inner類
2019-07-22
package?com.imooc; import?com.imooc.HelloWorld.Outer.Inner; public?class?HelloWorld{ ????public??class?Outer{??????????????//注意在這里修改成public?static?class?Outer{ ????private????int?a?=?99; ????public?class?Inner?{ ????????int?b?=?2; ????????public?void?test()?{ ????????????System.out.println("訪問外部類中的a:"+a); ????????????System.out.println("訪問內部類中的b:"+b); ????????} ???????? ????} ???? ?????public?static?void?main?(String[]?args){ ????Outer?o?=?new?Outer();??????????????????????//或者這里改成Outer?o?=?new?HelloWorld().new?Outer(); ????Inner?i?=?o.new?Inner(); ????i.test(); } ????} } 內部類中存在靜態成員,需要修改成靜態內部類(靜態內部類相當于一個外部類)2019-07-22
改成這樣可行
//外部類
public class HelloWorld{
? ? private? ?int a = 99;
? ? public class Inner {
? ? ? ? int b = 2;
? ? ? ? public void test() {
? ? ? ? ? ? System.out.println("訪問外部類中的a:"+HelloWorld.this.a);
? ? ? ? ? ? System.out.println("訪問內部類中的b:"+b);
? ? ? ? }
? ? ? ?}
? ? ?public static void main (String[] args){
? ? HelloWorld o = new HelloWorld();
? ? Inner i = o.new Inner();
? ? i.test();
}
}
2019-07-22
HelloWorld是外部類,其他的是內部類,外部類沒有實例化,