為什么用 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();
????
??}
??}
}
2018-05-10
不太懂你意思,我運行程序,沒什么錯誤,具體代碼我完全沒看,你要是真心想解決問題就描述清楚,你要實現什么功能,這樣才能幫你啊,大兄弟!
2018-05-10
你應該想的是inner為outer的內部類,所以inner可以直接使用outer的方法來輸出自己的值吧。
這是我找的那一節,注意第二條,內部類可以訪問外部類的方法,而并沒有說內類可以直接使用外類的方法來輸出自己的值吧。你可能沒意識到,這是繼承的概念。
有兩種解決方法
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{}
?}
有什么問題歡迎回復