程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> java類的問題……-Java中關於字父類的問題,求好心人幫助

java類的問題……-Java中關於字父類的問題,求好心人幫助

編輯:編程解疑
Java中關於字父類的問題,求好心人幫助

Zi類繼承Fu類,結果應該輸出6不應該是7啊,求大神解答。
class Fu{
int x=7;
int y=2;
public void a(){
System.out.println(this.x);
}
}
class Zi extends Fu{
int x=6;
}
public class a122 {
public static void main(String[] args){
Zi zi=new Zi();
zi.a();
}
}

最佳回答:


這個很好理解,因為你的方法a是從父類繼承過來的,最終調用的是父類的方法,雖然你的子類與父類有同名的成員變量x,但是本質上子類是有兩個x的,一個指向自己的x,另一個執行父類的x,然後調用a方法時,由於a是父類的方法,所以在父類方法中訪問的變量是父類的值。
如果你要輸出7,就要重新a方法,輸出子類自己的成員變量x。

 class Zi extends Fu{
    int x = 6;
    public void a() {
        System.out.println(this.x);
    }
}

子類和父類有相同的成員變量時,輸出到底是誰的取決於調用的是誰的方法。如果子類重寫了a()那麼輸出的就是子類的x。

qq_34316891
wojiushiwo945you
wojiushiwo945you
qq_34316891
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved