본문 바로가기
Java | spring/자바 객체지향

구현되지 않은, 추상클래스(abstract class)

by 워니 wony 2019. 5. 7.

추상 클래스 abstract class

  • 추상 메소드를 가지고 있는 클래스는 추상 클래스로 선언해 줘야 한다.
  • 자바에서 추상 메서드는 abstract 예약어를 사용하여 선언하는 메서드
  • 추상 클래스를 상속 받으면 구현되지 않은 추상 클래스를 구현하거나, 상속 받은 클래스도 추상 클래스로 만들어야 한다. 추상 메소드를 하나라도 가지고 있으면 추상클래스가 되어야 하기 때문.
  • 문법상으로 모든 메서드를 구현했더라도 abstract 예약어를 사용하면 추상 클래스이다. 생성해서 사용할 목적이 아니라 상속만을 위해 만든 추상 클래스로, 이러한 추상 클래스는 모든 메서드가 구현되어 있더라도,  new 예약어를 통해 인스턴스를 생성할 없다.
  • 추상클래스에서 구현된 메서드는 하위클래스에서 공통으로 사용할 구현 코드이며, 하위 클래스에서 재정의 있다. 추상 메서드는 하위 클래스가 어떤 클래스냐에 따라 구현코드가 달라진다.

 

ㅇ 추상클래스 특징

  • 추상 클래스는 인스턴스로 생성할 없다.
  • 추상 클래스는 상속을 하기 위해 만든 클래스, 하위 클래스가 어떤 클래스 인지에 따라 구현 코드가 달라지는 경우 사용

ㅇ 추상클래스 사용 이유

  • 추상클래스는 현재는 내용을 구체화 할수 없지만, 상속 받는 자식클래스에서 내용을 구체화 하도록 하기 위해서 사용하는 경우에 쓴다.
  • 반드시 자식 클래스에서 재 정의하도록 강제화 하기 위해
  • 자식 클래스에서 꼭 구현해야 하는 메소드이며, 각 자식 클래스마다 구현 방법이 다른 경우에도 추상클래스를 활용

 

추상 메소드 문법

  • abstract 리턴값 메소드명( [자료형 매개변수1, 자료형 매개변수2...] );
    • abstract String print(String a, String b)
  • 참고로 { } 있어도 추상메소드가 아니다. 구현부의 내용의 없을 뿐이다.
    • String print(String a, String b){ }
      이런 메소드는 추상 메소드가 아니다. { } 사용한 것만으로 메서드를 구현한 . 내용이 없는

 

 

[참고] 템플릿 메서드

  • 템플릿 메서드는 디자인 패턴의 방법으로 모든 객체 지향 프로그램에서 사용하는 구현 방법
  • 템플릿 메서의 역할은 메서드 실행 순서와 시나리오를 정의하는 것으로 로직 흐름이 이미 정해져 있는 프레임워크에서 많이 사용하는 기본 구현 방법
반응형

댓글