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

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

為什么用 in.print(); 不能訪問內部類變量


public class Classdemo {
?public static void main(String[] args) {
?outer out=new outer();
?out.show();
?outer.inner in=out.new inner();
?in.print();
?}

}
class outer{
?int num=3;
?String name="zhangsan";
?void show() {
??System.out.println("num="+num+"? "+"name"+name);
??}
??class inner{
???int num=8;
???String name="lisi";
???void print() {
????show();
????
??}
??}
}


正在回答

2 回答

不太懂你意思,我運行程序,沒什么錯誤,具體代碼我完全沒看,你要是真心想解決問題就描述清楚,你要實現什么功能,這樣才能幫你啊,大兄弟!

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

幕布斯2575146 提問者

就是我在內部類inner里面調用shouw方法打印的數據為啥不是inner類里面定義的變量,而是outer類里面定義的變量。(打印結果都是 3 和 zhangsan)
2018-05-10 回復 有任何疑惑可以回復我~
#2

幕布斯2575146 提問者

非常感謝!
2018-05-10 回復 有任何疑惑可以回復我~

你應該想的是inner為outer的內部類,所以inner可以直接使用outer的方法來輸出自己的值吧。

https://img1.sycdn.imooc.com//5af426fc00014c4e03960640.jpg

這是我找的那一節,注意第二條,內部類可以訪問外部類的方法,而并沒有說內類可以直接使用外類的方法來輸出自己的值吧。你可能沒意識到,這是繼承的概念。

有兩種解決方法

1、如果你不想繼承,直接把inner的print方法的方法體改為”System.out.println("num="+num+"? "+"name"+name);“,應該可以按你的要求運行。

2、我不知道你學過繼承沒,你想用繼承的話,我把代碼改成如下,你可以運行一遍。

public class Classdemo{
? public static void main(String[] args) {
? outer out=new outer();
? out.show();
? outer.inner in=out.new inner();
?? in.num=8;
?? in.name="lisi";
? in.show();
? }
?}
class outer{
?int num=3;
?String name="zhangsan";
?void show() {
?System.out.println("num="+num+"? "+"name"+name);
?}
?class inner extends outer{}
?}


有什么問題歡迎回復

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

幕布斯2575146 提問者

好的,看明白了,謝謝你的耐心解答,愛你?。
2018-05-10 回復 有任何疑惑可以回復我~
#2

流動的風與雪 回復 幕布斯2575146 提問者

嗯嗯,沒關系,有問題繼續問我,我也在自學Java
2018-05-11 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么用 in.print(); 不能訪問內部類變量

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

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

幫助反饋 APP下載

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

公眾號

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