[Java & SpringBoot로 시작하는 웹 프로그래밍] 3주차 학습 - 3 (추상클래스)

진문장·2021년 9월 11일
0

추상 클래스

추상 클래스란?

  • 추상 메서드를 포함한 클래스
  • 추상 메서드 : 구현 코드가 없이 선언부만 있는 메서드
  • abstract 예약어 사용
    추상 클래스는 new(인스턴스화) 할 수 없음

추상 클래스 구현

public abstract class Computer {
  public abstract void display();
  public abstract voud typing();
}
  • 메서드와 클래스에 abstract 키워드 사용
  • 추상 메서드가 포함된 클래스는 추상 클래스로 선언
  • 모든 메서드가 구현되었다고 해도 클래스에 abstract 키워드를 사용하면 추상 클래스

추상 클래스 사용하기

  • 추상 클래스는 주로 상속의 상위클래스로 사용됨
  • 추상 메서드 : 하위 클래스가 구현해야 하는 메서드
  • 구현된 메서드 : 하위 클래스가 공통으로 사용하는 기능의 메서드

템플릿 메서드

  • 템플릿: 틀이나 견본을 의미
  • 템플릿 메서드: 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름(시나리오)를 정의 해 놓은 메서드
    final로 선언하여 재정의 할 수 없게 함
  • 템플릿 메서드 패턴
    • 디자인 패턴의 일종
    • 프레임 워크에서 많이 사용되는 설계 패턴
    • 추상 클래스로 선언된 상의 클래스에서 추상 메서드를 이용하여 전체 구현의 흐름을 정의하고 구체적인 각 메서드 구현은 하위 클래스에 위임함
    • 하위 클래스가 다른 구현을 했다고 해서 템플릿 메서드에 정의된 시나리오 대로 수행됨

템플릿 메서드 구현 예제

public abstract class Car {
  public abstract void drive();
  public abstract void stop();
  
  public void startCar() {
    System.out.println("시동을 켭니다");
  }
  
  public void turnoff() {
    System.out.println("시동을 끕니다.");
  }
  
  /* 템플릿 메서드 */
  final public void run() {
    startCar();
    drive();
    stop();
    turnoff();
  }
}

final 예약어

  • final 변수는 값이 변경될 수 없는 상수임
  • 오직 한번만 값을 할당할 수 있음
  • final 메서드는 하위 클래스에서 재정의 할 수 없음
  • final 클래스는 더 이상 상속되지 않음

0개의 댓글

관련 채용 정보