当前位置: 首页 > 知识库问答 >
问题:

另一个“找不到符号”

景宏富
2023-03-14

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

这是我的主页。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。提前谢谢。

共有2个答案

穆智刚
2023-03-14

您只能通过CarLux类型的对象调用setAr方法,因为这是CarLux的方法而不是Vehicle,所以您必须将car2转换为CarLux,然后像这样调用方法-

((CarLux)car2).setAr(false);
娄德运
2023-03-14

您需要将car2声明为CarLux,而不是车辆。

CarLux car2 = new CarLux();

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

 类似资料:
  • 我用CodeNameOne创建了一个简单的示例应用程序,没有任何更改。证书和设置文件可用,并配置为项目属性。 IDE:Eclipse桌面操作系统:Windows 执行“发送IOS调试构建”启动服务器构建,并显示以下错误: /var/folders/p7/d3z112yd0156kxkm2p21p8ym0000gn/T/build5327647990993852705xxx/存根/TestBuild

  • DBHelper。JAVA LoginSevlet.java 我正在尝试访问LoginServlet中的DBHelper类,而编译i做了javac DBHelper.javajavac-cp"C:\User\dell\Desktop\MYServlet\WEB-INF\lib\servlet-api-2.5.jar;"LoginServlet.javaLoginServlet.java:13:错误

  • 我想解析一个字符串,看看它是匹配整个字符串还是子字符串。我试过这个: 但我的问题是:

  • 问题内容: 如果这是一个怪异的问题,我感到很抱歉,但是我刚刚开始OOP,并遇到了一个我应该制作的简单菜单驱动数学程序。我清除了编译器给我的所有错误,但是现在它给了我大约14个新错误,其中大多数被描述为“找不到符号”。这是我的代码: 这是新的编译器输出: 问题答案: 您从未在方法的主体中定义变量。尝试在方法中添加。简单地定义的变量并 没有 放弃对它的访问。如果要避免多次创建实例,可以执行以下操作 然

  • 问题内容: 我正在尝试为计算器编写第一个单元测试,但是NetBeans表示找不到符号和注释。 我应该包括一些东西吗? 我正在使用NetBeans 7.3.1和W7。 编辑:谢谢大家,将其导入为静态帮助。测试注释仅需包括 导入org.junit.Test; 问题答案: 是静态方法。由于不能使用静态方法而没有以静态方式显式导入它们,因此必须使用以下两种方法之一: 要么: 因为有点不同。是的注释,您可以

  • 问题内容: 最近有人要求我为一份工作编写3个测试程序。它们将仅使用核心Java API和我选择的任何测试框架来编写。应在适当的地方实施单元测试。 尽管我根本没有收到任何反馈,但我想他们不喜欢我的解决方案(否则我会收到他们的来信),所以我决定在这里展示我的程序,并询问这种实现是否可以认为是好的,并且,如果没有,那为什么呢? 为避免混淆,我现在只问第一个。 实现一个函数,以在另一个更大的数组中查找一个