JAVA
자바 객체지향 프로그래밍 - 13 [추상클래스(abstract)]
덴마크 당나귀
2023. 1. 11. 12:15
728x90
추상클래스(abstract)
- 추상 매서드를 포함한 클래스
- 추상 매서드 : 구현 코드가 없이 선언부만 있는 매서드
- 추상 클래스는 단독으로 사용하려고 선언하지 않음 -> 상위 클래스로서 사용하기 위해서 선언
- 추상 클래스안에 일반 매서드도 선언할 수 있는데 앞서 말했듯, 상위 클래스로서 하위 클래스에서 공통으로 쓸만한 것들만 선언 -> 하위 클래스에 따라 재정의 가능
- 구현해야될 매서드들을 상위클래스에서 선언을 해놓고 구현의 책임을 하위 클래스에 책임을 위임한다.
- abstract 예약어 사용
- 추상 클래스는 new(인스턴스화) 할 수 없음 -> 인스턴스를 불러도 바디가 없어서 구현할 필요가 없음
- cf) concrete class -> 기존 추상메서드와 반대되는 기존에 사용하던 클래스들
템플릿 매서드
템플릿 : 틀이나 견본을 의미
템플릿 매서드 :
- 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름(시나리오)를 정의해 놓은 매서드[로직의 흐름은 변하지 않는다는 것.]
- final로 선언하여 재정의 할 수 없게 함
템플릿 매서드 패턴
- 디자인 패턴의 일종
- 프레임 워크에서 많이 사용되는 설계 패턴
- 추상 클래스로 선언된 상의 클래스에서 추상 메서드를 이요하여 전체 구현의 흐름을 정의하고 구체적인 각 매서드 구현은 하위 클래스에 위임
- 하위 클래스가 다른 구현을 했다고 템플릿 메서드에 정의된 시나리오 대로 수행됨
final 예약어
- final 변수는 값이 변경될 수 없는 상수
- public static final double PI = 3.14; 이렇게 값이 변경되지 않을 때 final을 쓰고 오직 한 번만 값을 할당할 수 있음
- final 메서드 하위 클래스에서 재정의(overriding)할 수 없음
- final 클래스는 더 이상 상속되지 않음
728x90