我在代码中找不到符号错误(符号:方法setAr(boolean))。

这是我的Main.java文件:

class Vehicle {
    protected int marchs;
    protected int rode;
    public void xydar(int km) { System.out.print("\nxydei "+ km +" km!"); }
}
class Car extends Vehicle {
    public Car() { this.rode = 4; }
    public void xydar(int km) {
    super.xydar(km);
    System.out.println(" Estou de car!");
    }
}
class CarLux extends Car {
    private boolean ar;
    public CarLux() { this.ar = true; }
    public void setAr(boolean newAr) { this.ar = newAr; }
    public void xydar(int km) {
        super.xydar(km);
        if (this.ar)
        System.out.println(" ON!");
        else System.out.println(" OFF!");
    }
}
public class Main {
public static void main(String []args) {
    Vehicle moto = new Vehicle();
    moto.xydar(90);
    Vehicle car1 = new Car();
    car1.xydar(100);
    Vehicle car2 = new CarLux();
    car2.xydar(400);
    car2.setAr(false);
    car2.xydar(400);
    }
}


如何正确调用setAr()方法?谁能帮我?我是Java的新手。
提前致谢。

最佳答案

您需要将car2声明为CarLux,而不是Vehicle

CarLux car2 = new CarLux();


这是因为您的setAr()方法是在CarLux上定义的。 car2当前保存在类型为Vehicle的变量中,因此,当调用car2方法时,只有Vehicle声明的方法可用。

10-06 11:34