Java

[자바/Java] 추상 클래스(Abstract Class)

F12:) 2023. 7. 10. 14:41

추상 클래스란?

 : 공통적인 기능을 부모 클래스에로 정의해서 상속받되 일부 공통 기능은 자식 클래스에서 구현하도록 강제하는 것.

 

추상 클래스의 특징

- 구체적이지 않고 일반화된 클래스

- 객체들 간의 공통적인 기능을 정의한 클래스

- 기능의 구체적인 내용 구현은 자식 클래스에게 일임

- 추상 클래스는 단독으로 인스턴스를 만들 수 없음

- 상속을 통해 자식클래스에서 인스턴스를 생성

 


추상 클래스 선언하기

- 클래스 선언 부에 abstract 키워드 사용

- 추상 클래스의 멤버 : 필드, 생성자, 메소드

 

아래는 추상 클래스의 대표적인 예이다.

public abstract class Student {
	private final String name;
    
    Student(String name){
    	this.name = name;
    }
    
    public String getName() {
		return this.name;
    }
    
    abstract void study(String subject);
}

 

쉽게 말하면 추상 메소드를 가지고 있는 클래스를 추상 클래스라고 칭한다. 위의 코드에서 알 수 있듯이, 추상 메소드란 구현부가 존재하지 않는 메소드를 의미하며, 이 추상 클래스를 상속받는 클래스가 이 추상 메소드를 강제로 Override해야한다.

 

아래는 추상 클래스인 Student를 상속받은 클래스를 보여준다.

public class JavaStudent extends Student{
	JavaStudent(String name){
    	super(name);
    }
    
    @Override
    void study(String subject) {
    	System.out.println("추상 클래스를 Override");
	}
}

위와 같이 추상 메소드인 study를 자식 클래스가 강제로 Override하여 어노테이션까지 사용한 것을 알 수 있다.

 

이와같이 "공통 기능"을 추상화하여 선언한 클래스를 추상 클래스라고 한다.