2017-06-30 60 views
1

我有兩個類,每個類都擴展相同的類, 我試圖做的是更改另一個類屬性值,因爲我調用另一個類的方法。下面是我有:更改java中兩個子類之間的變量值

public class Termometro extends Equipamentos{ 

    public Termometro(String nome, int id) { 
     super(nome, id); 
    } 

-

public class ArCondicionado extends Equipamentos{ 

    public ArCondicionado(String nome, int id) { 
     super(nome, id); 
    } 

,並通過調用在ArCondicionado類此方法:

@Override 
public void setValor(double valor) { 
    super.setValor(valor);//change the atribute "valor" value of the termometro class here. 
} 
+0

您需要對父類中的兩個子類都有一些引用。然後,當你進行「超級」調用時,在父類中也有一些更新其他類的邏輯。 – QBrute

+0

如果該值始終在所有子類之間共享,則可以使用靜態字段 – BackSlash

回答

0

使用static領域,隨着所有實例共享的價值班上。

public class Equipamentos { 

    public static double valor; 

    protected String nome; 
    protected int id; 

} 

然後你用Equipamentos.valor = value;更改值。

0

你可以在你的ArCondicionado類中引用Termometro。然後,您只需調用引用該方法的方法:

public class ArCondicionado extends Equipamentos { 

    private Termometro termometro; 

    @Override 
    public void setValor(double valor) { 
      termometro.setValor(valor); 
    } 
} 
+0

我認爲它有效,但是當我調用它時,它給了我這個錯誤:java.lang.NullPointerException。 我看不到空值來自哪裏。 – Vinuz

+0

那麼也許你應該確保termometer在構造函數中被實例化。 – DanielPDF