2017-03-14 84 views
1

所以我們說我有3個班。Java擴展類不保存變量,它可以做到嗎?

public class sup extends sup3{ 
    private int year, month; 
    private sup2 supp = null; 
    public sup(int year, int month){ 
     this.year = year; 
     this.month = month; 
     super.setYear(this.year); 
     super.setMonth(this.month); 
     createClass(); 
    } 

    public void createClass(){ 
      sup2 supp = new sup2(); 
    } 
} 

二等

public class sup2 extends sup3 { 

    public sup2(){ 
     whatever(); 
    } 

    public void whatever(){ 
     System.out.println(getYear() + " " + getMonth()); 
    } 
} 

;第三類

public class sup3 { 
    private int year, month; 

    public void setYear(int year){ 

     this.year = year; 
     System.out.println("Year: " + this.year); 
    } 
    public void setMonth(int month){ 
     this.month = month; 
     System.out.println("Month: " + this.month); 
    } 
    public int getYear(){ 
     return this.year; 
    } 
    public int getMonth(){ 
     return this.month; 
    } 
} 

很顯然主

public class Main { 

    public static void main(String[] args) { 
     sup suppp = new sup(2000, 15); 
    } 
} 

即使我設置sup3時變量槽一流的我所以基本上看不到他們儘管我可以訪問sup3課程,但在sup2課程中。我不會在任何地方製作和保存擴展sup3類,爲什麼我無法在任何地方看到設置變量?

它只是打印出0 0

+0

SUP2擴展自己的sup3時 – Jdman1699

+3

注意的實例的實例'sup'有_TWO different_'year' s和_two different_'month's。你重複了私有變量。 –

+0

@LouisWasserman因爲它們在類的構造函數參數和變量中是相同的名字? – CyprusN

回答

3

很簡單,你的階級結構創造了supsup2之間沒有任何關係。除了有一個共同的父母,這兩個班是完全獨立的事情。

(更正:sup3是共同的父類,而不是作爲sup這個答案以前版本的建議)

+0

我應該如何着手創建一個可以保存變量的類,以便所有其他類可以訪問它們?就像在這個例子中,我給出瞭如何讓sup2訪問這些設置變量? – CyprusN

+0

爲什麼你甚至認爲你想這樣做? –

+0

因此,如果我有很多課程,其中一些需要可能的年份或月份,或者兩者都有,我不必通過它們並可以輕鬆訪問它們?但我想這不是很好的編碼 – CyprusN

相關問題