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



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

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

class Horse { // <== note not actually allowed...
   public abstract int getNeighCount();
}
Horse horse = new Horse();
horse.getNeighCount();  // <== what would happen here??

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

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

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

抽象

方法旨在被该抽象类的子类覆盖,以提供非常具体的实现,并且实际上是一个骨架。

最新更新