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

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

第一個圖代碼為啥運行不起來

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();
}
?? ?}
}
???

正在回答

5 回答

多層嵌套內部類這樣的,可以這樣寫

//外部類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();
????}
}


4 回復 有任何疑惑可以回復我~

你這里有三個類

HelloWorld類?? 包含 Outer類? 包含? Inner類

是順序關系,你的類嵌套三層

要在HelloWorld類里去調用最里層的Inner類的方法

先實例化HelloWorld類,再實例化Outer類,再實例化Inner類


3 回復 有任何疑惑可以回復我~
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();
}
????}
}

內部類中存在靜態成員,需要修改成靜態內部類(靜態內部類相當于一個外部類)


2 回復 有任何疑惑可以回復我~

改成這樣可行

//外部類

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();

}


}


2 回復 有任何疑惑可以回復我~

HelloWorld是外部類,其他的是內部類,外部類沒有實例化,

2 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

第一個圖代碼為啥運行不起來

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

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

幫助反饋 APP下載

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

公眾號

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