[英]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.