对象的变量——Java

我有两个班级,Main.java并且Car.java


Main.java:


class Main

{

    public static void main(String[] args)

    {

        Car ferrari = new Car(18, 25.43);

        System.out.println(ferrari.efficiency);

    }

}

Car.java:


class Car

{

    public Car(double mpg, double initFuel)

    {

        double efficiency = mpg;

        double fuel = initFuel;

    }

}

我显然试图将效率分配给创建对象时传入的第一个构造函数,但这似乎不起作用(即当我在 Main.java 中使用时找不到变量println)。如何将变量分配给稍后引用的对象?


慕哥9229398
浏览 124回答 3
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());    }}

ibeautiful

使效率和燃料在你的类中全局化,而不是在你的构造函数中局部化。 Main.javapublic class Main{    public static void main(String[] args)    {        Car ferrari = new Car(18, 25.43);        System.out.println(ferrari.efficiency);    }}Car.javapublic class Car{    public double efficiency;    public double fuel;    public Car(double mpg, double initFuel)    {        efficiency = mpg;        fuel = initFuel;    }}那应该有效。但是您可以将实例变量设为私有而不是公共,并使用 setters/getters 还将您的 Main 和 Car 设置为公共,以便可以从另一个类访问/实例化它们。 Main.javapublic class Main{    public static void main(String[] args)    {        Car ferrari = new Car(18, 25.43);        System.out.println(ferrari.getEfficiency());    }}Car.javapublic class Car{    private double efficiency;    private double fuel;    public Car(double mpg, double initFuel)    {        efficiency = mpg;        fuel = initFuel;    }    public double getEfficiency(){        return efficiency;    }}

UYOU

将您的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 THIStesla.setEfficiency(15.5); //Do this insteadSystem.out.println(tesla.getEfficiency()); //Will print 15.5
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java