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条经验 获得超5个赞
使效率和燃料在你的类中全局化,而不是在你的构造函数中局部化。 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
添加回答
举报