从一种方法调用变量到另一种方法

时间:2016-02-13 03:18:15

标签: java

好吧,这让我抓狂!我有两个方法和两个类。我试图调用从方法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
     }
}

3 个答案:

答案 0 :(得分:0)

局部变量没有记忆

退出方法时,局部变量和参数变量都会消失(但是,如果将对象作为参数传递,则在退出方法时通常可以访问该对象)。 这意味着如果您调用testRightTriangle()并运行声明,它会创建新框并初始化它们。退出时,这些局部变量将消失。

当你第二次调用它时,它会重新创建局部变量,并重新初始化它们。

参数表现得有点像这样。这些变量被初始化为参数。

只有实例变量在方法调用中保持其值。也就是说,如果某个实例变量的高度值为4,并且您将其更改为10,则下次进行方法调用时,它仍为10.它会保持为10,直到某个方法调用更改该值。

答案 1 :(得分:0)

 double mySales = getSales;

需要

  double mySales = getSales();

因为getSales是一种方法。

this.sales=sales;
如果您尝试使用传递给方法的参数来设置B类中的私有变量,则需要切换

答案 2 :(得分:0)

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+);
 }