找不到符号:barkOnce()的位置:Object类型的变量d

时间:2018-04-03 16:42:13

标签: java object compiler-errors

class Main {
    public static void main(String[] args) {
       Object d = new Dog();
       d.barkOnce();
    }
}

class Dog
{
    private String voice;

    public void barkOnce()
    {
        System.out.println(voice);
    }
 }

当我运行程序时,输出中出现错误:

退出状态1 Main.java:4:错误:找不到符号    d.barkOnce();     ^   符号:方法barkOnce()   location:Object类型的变量d

在分析错误之后,我无法确定为什么找不到该方法。有人可以解释一下我在这里可能缺少什么吗?

2 个答案:

答案 0 :(得分:1)

方法barkOnce()不属于Object类型的一部分。您应该能够编译:

Dog d = new Dog()

当你转换为像Object这样的基础时,编译器阻止你使用更具体类型的任何东西,除非你回击。

答案 1 :(得分:0)

这是因为您将变量“d”声明为Object类型。 Object没有barkOnce()方法。你可以把它投给狗:

((Dog) d).barkOnce();

或宣布它为狗开头:

Dog d = new Dog();