3 回答
TA貢獻1818條經驗 獲得超3個贊
您在 的構造函數中使用局部變量Car。它們的生命周期限制在您的構造函數內。只需在您的班級中聲明您的成員并使用 getter 和 setter 來訪問它們。
class Car
{
private double efficiency;
private double fuel;
public Car(double mpg, double initFuel)
{
this.efficiency = mpg;
this.fuel = initFuel;
}
public void setEfficiency(double efficiency) {
this.efficiency = efficiency;
}
public double getEfficiency() {
return efficiency;
}
// Same thing for fuel...
}
在你的Main:
class Main
{
public static void main(String[] args)
{
Car ferrari = new Car(18, 25.43);
System.out.println(ferrari.getEfficiency());
}
}
TA貢獻1993條經驗 獲得超6個贊
使效率和燃料在你的類中全局化,而不是在你的構造函數中局部化。 Main.java
public class Main
{
public static void main(String[] args)
{
Car ferrari = new Car(18, 25.43);
System.out.println(ferrari.efficiency);
}
}
Car.java
public class Car
{
public double efficiency;
public double fuel;
public Car(double mpg, double initFuel)
{
efficiency = mpg;
fuel = initFuel;
}
}
那應該有效。但是您可以將實例變量設為私有而不是公共,并使用 setters/getters 還將您的 Main 和 Car 設置為公共,以便可以從另一個類訪問/實例化它們。 Main.java
public class Main
{
public static void main(String[] args)
{
Car ferrari = new Car(18, 25.43);
System.out.println(ferrari.getEfficiency());
}
}
Car.java
public class Car
{
private double efficiency;
private double fuel;
public Car(double mpg, double initFuel)
{
efficiency = mpg;
fuel = initFuel;
}
public double getEfficiency(){
return efficiency;
}
}
TA貢獻1878條經驗 獲得超4個贊
將您的Car課程更改為:
class Car
{
private double efficiency;
private double fuel;
public Car(double mpg, double initFuel)
{
this.efficiency = mpg;
this.fuel = initFuel;
}
}
當為實例化的對象使用變量時,您需要在Class范圍而不是本地范圍內聲明變量。這些變量通常是從構造函數中設置的,因此以后可以從對象本身訪問它們。
大多數時候,它們也被聲明為private使用單獨的方法來get訪問set它們,而不是直接訪問它們。
例子:
public double getEfficiency(){
return this.efficiency;
}
public void setEfficiency(double mpg){
this.efficiency = mpg;
}
大多數 IDE 可以為您自動生成 Getters 和 Setters,因此您無需為每個變量手動編寫它們。
要使用 getter/setter,您可以從類的實例調用方法,而不是直接使用變量:
Car tesla = new Car(35.5, 90.5);
tesla.efficiency = 15.5; //YOU CAN'T DO THIS
tesla.setEfficiency(15.5); //Do this instead
System.out.println(tesla.getEfficiency()); //Will print 15.5
添加回答
舉報
