亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對象的變量——Java

對象的變量——Java

慕哥9229398 2023-03-31 15:27:43
我有兩個班級,Main.java并且Car.javaMain.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)。如何將變量分配給稍后引用的對象?
查看完整描述

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());

    }

}


查看完整回答
反對 回復 2023-03-31
?
ibeautiful

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;

    }

}


查看完整回答
反對 回復 2023-03-31
?
UYOU

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


查看完整回答
反對 回復 2023-03-31
  • 3 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號