我知道抽象类和具体类之间的差异很小.我知道你不能用具体类创建一个抽象类的实例,抽象类可以有'抽象'方法.
但我有一个像下面这样的例子.很多时候,我们看到以下示例正在起作用.我将跳过一些可以在Parent类中定义的常用方法.
public abstract class Parent {
public void init() {
doInit();
}
public abstract void doInit();
}
public class Child extends Parent {
public void doInit() {
// implementation
}
}
Run Code Online (Sandbox Code Playgroud)
我认为我们可以用如下的具体类做同样的事情.
public class Parent {
public void init() {
doInit();
}
public void doInit() {
// Empty
}
}
Run Code Online (Sandbox Code Playgroud)
我很想知道是否有任何独特的情况我们必须使用抽象类.运行期间是否与上述示例有任何显着差异?
谢谢.
abstract在这种情况下使用类的原因是强制每个继承基类的人都覆盖抽象doInit方法.如果没有类和方法是抽象的,他们可能会忘记这样做,编译器也不会捕获它们.
除了这种实用的目的,抽象类提供了一种强大的方式来将您的设计理念传达给代码的读者.抽象类告诉读者,内部方法为一组相关类提供了一些通用实现,而不是实现您正在建模的单个概念.经常向读者传达您的意图与编写正确的代码一样重要,因为否则他们可能会在维护代码时破坏某些内容.
在Java中习惯于调用抽象类Abstract...; 在你的例子中AbstractParent.