2017-01-06 27 views
1

我有2類A和B如何轉移設置類的變量?

class A{ 
    private int a=0; 
    A(){ 
    B b = new B(); 
    } 
} 
class B{ 
    void set(){ 
    ??? 
    } 
} 

欲對象b組可變的一類A的,如何實現它???

+0

我做的是含有B類的對象一個JFrame,B中處理後有結果,我會轉院在類的JLabel –

+0

通電流的JFrame對象的JFrame和打印結果'B'那麼你就可以訪問你的JLabel在'B'類中,並且可以設置JLabel。 –

+0

也問問自己爲什麼B班必須改變A的變量?有時這可能意味着變量確實應該在B中,或者變量變量的方法應該在A中......或者A和B應該合併成一個類...... –

回答

1

由於aA是私人的,它應該總是通過一些方法A訪問。

class A{ 
    private int a=0; 
    A(){ 
     B b = new B(); 
     b.set(this); 

    } 

    public void change(int f){ 
     a= f; 
    } 
} 

class B{ 
    void set(A x){ 
     x.change(5); // or any pass value 
    } 
} 
+0

謝謝你,我使用你的代碼和一些改變,它的工作 –

+0

總是記得一個類的私人成員只能通過該類的方法改變。感謝接受。 –

0

你必須在一個私有變量的A類寫getter和setter方法。

class A{ 
     private int a=0; 
     public int getA() { 
     return a; 
    } 
    public void setA(int a) { 
     this.a = a; 
    } 
    A(){ 
     B b = new B(); 
     } 
    } 
    class B { 
     public int b = 0; 
     void set(){ 
     A a = new A(); 
     b = a.getA(); 
     } 
    } 
+0

類'B'的'set'方法不被調用。問題是如何通過類'B'的'set'方法改變'A'類的'a'。 –

+0

我想你想改變設置方法中** a **的值。所以你調用a.setA(value)而不是getA()。 – THA

+0

你已經在set方法中創建了一個不需要的新對象。您應該在set方法中傳遞當前對象的上下文,然後在class B的set方法中調用setA方法。 –