Java 为什么包含抽象方法的类必须是抽象的?

Java 为什么包含抽象方法的类必须是抽象的?,java,abstract-class,abstract,Java,Abstract Class,Abstract,我不明白为什么包含抽象方法的类必须是抽象的。这与任何必须无关。至少有一个抽象方法的类是抽象的,这就是定义。一个具体(非抽象)类必须有其所有方法的实现。因此,未实现的(抽象)方法只能在接口或抽象类中。从另一个角度来看,假设您的抽象方法类不必是抽象的,并且允许您实例化它,如果您调用该方法,编译器会做什么没有实际的代码可以运行。这就是为什么我们声明类抽象-我们将其标记为“尚未准备好使用”,然后创建一个“具体”子类,该子类中没有可实际使用的抽象方法 class Horse { // <== not

我不明白为什么包含抽象方法的类必须是抽象的。

这与任何必须无关。至少有一个抽象方法的类是抽象的,这就是定义。

一个具体(非抽象)类必须有其所有方法的实现。因此,未实现的(抽象)方法只能在接口或抽象类中。

从另一个角度来看,假设您的抽象方法类不必是抽象的,并且允许您实例化它,如果您调用该方法,编译器会做什么没有实际的代码可以运行。这就是为什么我们声明类抽象-我们将其标记为“尚未准备好使用”,然后创建一个“具体”子类,该子类中没有可实际使用的抽象方法

class Horse { // <== note not actually allowed...
   public abstract int getNeighCount();
}

Horse horse = new Horse();
horse.getNeighCount();  // <== what would happen here??

默认情况下,即使在您的接口中,所有方法都是抽象的


抽象方法意味着由该抽象类的子类重写,以提供非常具体的实现,实际上是一个框架。

如果您有一个抽象方法,则意味着该方法尚未实现,因此根据定义,该类是不完整的,因此是(并且必须是)你的解释很好,谢谢:)