상세 컨텐츠

본문 제목

자바 객체지향 프로그래밍 - 13 [추상클래스(abstract)]

JAVA

by 덴마크 당나귀 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

관련글 더보기