저는 객체 지향 프로그래밍의 개념을 배우고 있습니다. 그 중 하나는 추상화입니다. 나는 추상적 인 메소드를 포함하는 어떤 클래스도 추상적이어야하고 추상 클래스는 인스턴스화 될 수 없다는 것을 이해한다. 추상 클래스를 사용하려면 다른 클래스에서 상속해야합니다.추상적 인 메서드와 클래스의 사용법이 명확하지 않습니다.
지금까지 그렇게 좋았습니다.
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 void start(){
System.out.print("");
}
: I 클래스 Games
에 따라 적혀 있었다
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();
}
}
그러나을의 다음 코드를 보자 abstract
일 필요는 없으며 출력도 동일하고 Games
클래스를 인스턴스화 할 수도 있습니다. 그렇다면 추상적 인 방법과 수업을 만드는 열쇠는 무엇입니까?
소프트웨어 엔지니어링 스택에는 [좋은 설명이 있습니다 (https://softwareengineering.stackexchange.com/questions/96947/why-should-i-declare-a-class-as-an-abstract-class). . – azurefrog
''게임 '을 구체적인 클래스로 만드는 이유를 생각할 수 있다면, 꼭 그 메소드를 구현하십시오. 추상화는 인스턴스를 갖는 것이 타당하지 않은 클래스를위한 것입니다. – jsheeran
당신이 제안한 'start()'메소드가 그렇지 않다면, 그것을 추상적으로 표시 할 수 있는지 물어보십시오. 더미 구현을 제공하는 것이 타당하지 않을 때, 클래스 **는 그것을 구현해야합니다 **. –