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

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

靜態內部類和成員內部類有區別嗎?調用兩者中的方法不一樣是嗎?如何區別?

?順便看下這個代碼中的調用方法哪里不對?

//外部類
public class HelloWorld {
???
??? // 外部類中的靜態變量score
??? private static int score = 84;
???
??? // 創建靜態內部類
?public??? static????? class SInner {
??????? // 內部類中的變量score
??????? int score = 91;
???????
??public void show() {
???System.out.println("訪問外部類中的score:" +HelloWorld.score??????????? );
???System.out.println("訪問內部類中的score:" + score);
??}
?}

?// 測試靜態內部類
?public static void main(String[] args) {
??// 直接創建內部類的對象
??????? HelloWorld hello=new HelloWorld();
??????? SInner si=hello.new SInner();
???????
??????? // 調用show方法
??si.show();
?}
}

正在回答

2 回答

你可以把靜態內部類、成員內部類 與 靜態變量、成員變量類比來看。

靜態的東西是屬于 一個類(或者說這個類所有對象共有的),成員的東西是屬于一個具體對象的,當你每實例化了一個對象,這些對象都會擁有各自的成員變量,非靜態方法。當然靜態內部類,成員內部類也與此類似。

public class HelloWorld {
????
??? // 外部類中的靜態變量score
??? private static int score = 84;
????
??? // 創建靜態內部類
?public??? static????? class SInner {
??????? // 內部類中的變量score
??????? int score = 91;
????????
??public void show() {
???System.out.println("訪問外部類中的score:" +HelloWorld.score??????????? );
???System.out.println("訪問內部類中的score:" + score);
??}?
?}

?// 測試靜態內部類
?public static void main(String[] args) {
??// 直接創建內部類的對象
??????? HelloWorld hello=new HelloWorld();
??????? SInner si=hello.new SInner();
????????
??????? // 調用show方法
??si.show();
?}
}

我認為畫橫線的部分寫的有些問題(當然你這樣寫也不會報錯),靜態內部類(想一下靜態方法)的實例用外部類類名去調用就可以了,像是這樣:

new HelloWorld. SInner();至于為什么不是HelloWorld.new SInner()自己好好體會一下吧,new+一個類才是實例化一個對象的表達式。

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

GNEZ

我試了一下橫線的代碼,在我這(eclipse luna)會報錯 直接用外部類類名調用沒有問題
2015-10-02 回復 有任何疑惑可以回復我~

?HelloWorld hello=new HelloWorld();
??????? SInner si=hello.new SInner();? ? ? ??
??????? // 調用show方法
??si.show();

改為HelloWorld.SInner si=new HelloWorld.SInner();

????si.show();更合適

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

勤奮學習的kid 提問者

我的代碼打進去會報錯,你這個是對的,但是這個實例化過程我看不懂能解釋下嗎? HelloWorld.SInner這個是什么意思?是說外部類下的靜態內部類?可以用.連接?
2015-09-24 回復 有任何疑惑可以回復我~
#2

GNEZ 回復 勤奮學習的kid 提問者

HelloWorld.hobby();(用類名.方法名調用靜態方法)HelloWorld.hobby;(用類名.成員名調用靜態成員變量)
2015-10-02 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

靜態內部類和成員內部類有區別嗎?調用兩者中的方法不一樣是嗎?如何區別?

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

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

幫助反饋 APP下載

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

公眾號

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