簡體   English   中英

從一種方法調用變量到另一種方法

[英]calling variables from one method to another

好吧,這讓我發瘋! 我有兩個方法和兩個類。 我正在嘗試從方法A到方法B調用變量。方法A駐留在類A中,但是它擴展了類B。方法B在類B中。我正在使用帶有get / set的私有變量,但我不明白為什么,當變量在方法A中更新時,即使變量位於類B中,它也不會轉移到方法B。以下是代碼:

public class A extends class B {
   public double method A () {
     setSales(userInput.nextDouble());
     double mySales = getSales;
System.out.print("my sales is " +mySales+);
    }
}

public class B {
    private double sales;

    void setSales(double sales) {
    this.sales=sales;
    }

    double getSales() {
    return sales;
    }

   public method B () {
      System.out.print(+sales+);
      //printout equals 0 with user input of any number
     }
}

局部變量沒有內存

退出方法時,局部變量和參數變量都會消失(盡管,如果將對象作為參數傳遞,則通常在退出方法時可以訪問該對象)。 這意味着,如果調用testRightTriangle()並運行聲明,它將創建新框並對其進行初始化。 退出時,這些局部變量消失。

當您第二次調用它時,它將重新創建局部變量,並將其重新初始化。

參數的行為類似於此。 這些變量被初始化為參數。

只有實例變量在方法調用中保持其值。 也就是說,如果某個實例變量的height值為4,並且將其更改為10,那么下次您進行方法調用時,該值仍為10。它保持為10,直到某個方法調用更改了該值。

 double mySales = getSales;

需要是

  double mySales = getSales();

因為getSales是一種方法。

this.sales=sales;

如果您嘗試使用傳遞給該方法的參數設置類B中的私有變量,則需要進行切換。

類A不是類B,它們的共同點是方法和屬性。 因為類A擴展了類B,並不意味着它們共享相同的內存,因此它們各自持有的字段存儲在不同的內存位置。 這就是為什么在類A中更新屬性A時不會將其轉移到類B的原因。如果您希望能夠在類B中修改屬性,則可能需要向方法A添加參數。

更改方法A改為:

public double method A (Class B instanceToModify) 
 {
     setSales(userInput.nextDouble());
     instanceToModify.mySales = getSales();
     System.out.print("my sales is " +mySales+);
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM