자바 공부/[ 完 ] 자바 실전 - 기본편
10-6. 다형성 - 추상클래스
잘데친갈비
2024. 3. 29. 14:33
추상클래스
- 부모 클래스는 제공하지만, 실제 생성되면 안되는 클래스를 말한다.
- 말그대로 추상적인 개념을 제공하는 클래스로, 객체(인스턴스)가 존재하지 않는다.
- 상속의 목적으로 사용되고, 부모 클래스 역할을 담당한다.
- 개발자가 실수로 오버라이딩을 하지 않고 생성하여 코드상 아무런 문제가 발생하지 않는 경우가 생기는것을 방지하기 위해 사용한다.
→ 사용 법 ) class 앞에 abstract 를 붙여주어 사용한다.
abstract class AbstractAnimal{ ... } // <- 추상 클래스 선언
⇒ 특징 )
- 추상 클래스는 기존 클래스와 완전 같다
- 다만 new AbstactAnimal 과 같은 자신으로 객체 (인스턴스) 생성을 못하도록 막는다.
추상메서드
- 부모 클래스를 상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 메서드 이다.
- 부모 클래스에 작성한 추상 메서드는 body 부분이 없어야 한다.
→ 사용 법 ) class 와 마찬가지로 class 의 메서드 앞에 abstract 를 붙여주어 사용한다.
abstract class AbstractAnimal{ // <- 추상 클래스 선언
public abstract void sound () // <- 추상 메서드 선언
}
⇒ 특징 )
- 추상 메서드가 1개라도 있는 클래스는 무조건 추상 class 로 만들어 주어야한다.
- 추상 메서드는 자식 클래스에서 반드시 오버라이딩 되어 사용되어야 한다. → 그렇지 않으면 컴파일 오류가 발생한다.
- 만약 추상 메서드가 존재한 클래스를 상속 받는 자식 클래스가 추상 메서드를 오버라이딩 하지 않는다면 해당 자식 클래스도 추상 클래스가 되어야 오류가 발생하지 않는다.
⇒ 결론 ) 추상 메서드는 기존 메서드와 같지만 바디가 없고, 자식 클래스에서 반드시 오버라이딩 되거나 자식을 추상 클래스로 만들어야하는 제약이 생긴다.
추상 클래스, 추상 메서드 결론
- 추상 클래스 덕분에 실수로 부모 객체를 생성 하는 문제를 근본적으로 방지해준다.
- 추상 메서드 덕분에 새로운 자식 클래스를 만들 때 필수 오버라이딩을 안 하는 문제를 방지해준다.