drjava告诉我没有main,但是main是在类声明中定义的

jaql4c8m  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(331)

我想用drjava学习java。
当我尝试运行这段代码时,drjava告诉我:
静态错误:此类没有接受字符串[]的静态void main方法。
我不明白的是为什么drjava告诉我没有main。这是班级犬类申报后的第一行;我没有看到任何拼写错误或缺少标点符号。
我试着用谷歌搜索这个,但我不明白他们在说什么。
如果有人能给我一个线索,虽然不能给我答案,但却能让我自己弄清楚为什么会发生这种事,那就太好了——但是如果问题太简单,无法创造学习机会,那么我会采取解决办法;我想是吧。

/*
 * This is an exercise designed to practice creating a class Animal
 * And then creating another class canine in which to create an object dog.
 * The reason I want to call from one class to another is because I want 
 * to understand how classes, objects, inheritance, etc. works. 
 * Clearly, class canine is -in my mind at least, a child of class Animal.
 * The main method of canine then calls method attributes I think are being
 * inherited by dog and wolf,from the class Animal.    
 */

public class Animal {
  void growl() {
    System.out.println("Grrr");
  }
  void bark() {
    System.out.println("Arf! Arf!");
  }
}

class canine {
  public static void main(String[]args) {
    Animal dog = new Animal();
    dog.bark();

    Animal wolf = new Animal();
    wolf.growl();

  }
}
isr3a4wc

isr3a4wc1#

这段代码和 java 命令行工具: java canine 当你这么做的时候 java canine ,你会告诉 java 用于查找和加载 canine 类并运行其 main 方法。
如果你用的是 java Animal ,问题是 Animal 没有 main . canine 做。
显然,犬科动物至少在我看来,是动物类的孩子
不,两者之间没有关系 canine 以及 Animal 除此之外 canine 使用 Animal 在它的 main . 例如。, canine 取决于 Animal 但与此无关。如果您希望它是一个子类(对“child class”的一种相当合理的解释),您可以添加 extends Animal 它的声明。如果您希望它是一个嵌套类(另一个相当合理的“子类”解释),您可以将它放在里面 Animal .
根据您的评论:
但是我仍然不明白为什么drjava告诉我它没有接受string[]的静态void main方法。而且,当我运行drjava时,它不会打印任何东西。
我想你把 canine 在同一个文件中 Animal ,制作 Animal public,然后期望drjava知道它应该运行 canine.main 而不是 Animal.main . 请参阅下面有关最佳实践的注解。
另一条评论:
但是没有 dog.bark() 直接调用中的函数 Animal ? 为什么我需要在这个场景中“扩展”?
你没有。一个类可以使用另一个类,而它们之间不存在任何继承关系,就像您的代码所做的那样。您在评论中使用的术语“子类”表明您打算继承或类似的东西。
旁注:虽然您不必遵循它们,但遵循标准java命名约定是一种很好的实践。类名应该以大写和大小写开头。所以呢 Canine 而不是 canine .
旁注2:正如满是鳗鱼的气垫船所说,最好把每一类都放在自己的类别里 .java 文件,以类的名称命名。从技术上讲,你可以把非公共类放在任何地方 .java 文件(这就是代码使用 canineAnimal.java )但总的来说,最好的做法还是将它们分开。所以你应该 Animal.java 包含 Animal 班级,以及 canine.java 包含 canine 等级(或更好, Canine.java 包含 Canine 类)。

相关问题