私はオブジェクト指向プログラミングの概念を学んでいます。それらの1つは抽象です。私は、抽象メソッドを含むどのクラスも抽象クラスでなければならず、抽象クラスをインスタンス化できないことを理解しています。抽象クラスを使用するには、別のクラスから継承する必要があります。抽象メソッドとクラスの使用が不明確
これまでのところとても良いです。その後
public void start(){
System.out.print("");
}
:以下のコードてみましょう:
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
に次のように書かれている可能性がabstract
である必要はなく、出力は同じで、Games
クラスをインスタンス化することさえできます。抽象メソッドとクラスを作る鍵は何ですか?
ソフトウェアエンジニアリングスタックに[良い説明]があります(https://softwareengineering.stackexchange.com/questions/96947/why-should-i-declare-a-class-as-an-abstract-class)。 。 – azurefrog
「ゲーム」を具体的なクラスにする理由を考えることができれば、ぜひそのメソッドを実装してください。抽象化は、クラスのインスタンスを持つことに意味がないクラスです。 – jsheeran
あなたが提案した 'start()'メソッドは、そうでない場合、それを抽象的にマークすることができます:ダミーの実装を提供することは意味がなく、クラス**はそれを実装しなければなりません。 –