内部类中的非法静态声明

时间:2021-08-01 13:11:58

标签: java inner-classes

问题已编辑。

*同时,这不是我的代码,原来;它是从 Java 复制的 教程教科书。

这是运行后的输出:error: can't find main(String[]) method in class: Dog

这可能是什么原因?

class Dog {
    int size;
    String breed;
    String name;

    void bark() {
      System.out.println("Ruff!");
   }
}

class DogTestDrive {
  public static void main(String[] args){
    Dog d = new Dog();
    d.size = 40;
    d.bark();
   }
}

3 个答案:

答案 0 :(得分:0)

你的'main'在DogTestDrive类中,它在Dog类中的Bark方法中。

这可能不是你想要的。检查你的牙套。

如果你是故意的,那就错了。内部类 DogTestDrive 不能有“静态”成员,因此不能在那里声明“main”。

两个顶级课程会更合适。

答案 1 :(得分:0)

您试图在 class 方法中使用 static 方法声明 bark(),但这是不可能的。因此,您需要将 DogTestDrive 类声明移出 bark() 方法,但它仍然不起作用,因为 DogTestDrive 在您的示例中不是 static,而是方法 {{ 1}} 在里面。因此,您需要将 main 声明为静态。

DogTestDrive

class Dog { int size; String breed; String name; void bark() { System.out.println("Ruff!"); } static class DogTestDrive { public static void main(String[] args) { Dog d = new Dog(); d.size = 40; d.bark(); } } } 方法调用的输出:

main()

Nested static class Java

答案 2 :(得分:-1)

我认为错误信息非常直接。 'static' 修饰符不能在内部类中,因此您可以按以下方式重写 DogTestDrive:

Ruff!

此外,我认为 DogTestDrive 类没有理由从 Dog 类继承,因此您可以删除继承。

相关问题