【发布时间】:2018-06-01 01:14:17
【问题描述】:
我正在学习面向对象编程的概念。其中之一是抽象。我知道任何包含抽象方法的类也应该是抽象的,并且不能实例化抽象类。要使用抽象类,我必须从另一个类继承它。
到目前为止一切顺利。让我们看下面的代码:
public abstract class Games {
public abstract void start();
public void stop(){
System.out.println("Stopping game in abstract class");
}
}
class GameA extends Games{
public void start(){
System.out.println("Starting Game A");
}
}
class GameB extends Games{
public void start(){
System.out.println("Starting Game B");
}
}
然后我们有一个带有main 方法的类:
public class AbstractExample {
public static void main(String[] args){
Games A = new GameA();
Games B = new GameB();
A.start();
A.stop();
B.start();
B.stop();
}
}
但我本可以在Games 课堂上写下以下内容:
public void start(){
System.out.print("");
}
那么它不必是abstract,输出将是相同的,我什至可以实例化Games 类。那么制作抽象方法和类的关键是什么?
【问题讨论】:
-
软件工程堆栈上有一个good explanation。
-
如果你能想到一个理由让
Games成为一个具体的类,那么一定要继续实现那个方法。抽象适用于拥有实例没有意义的类。 -
问问你自己,你提出的
start()方法是否有意义,如果没有,这就是为什么你可以将它标记为抽象:当提供一个虚拟实现没有意义时,并且使绝对清楚子类必须实现它。