java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2

CHAPTER 7. (7) 추상 클래스란? (추상 메서드 포함)

Astaroth아스 2020. 4. 2. 13:50

추상 클래스
 - 미완성 설계도
 - 추상 메서드 (미완성 메서드) 를 포함한 클래스
 - 추상 클래스로 인스턴스 생성 불가
 - 상속을 통해서 자식 클래스에 의해서 완성 가능

사용 이유?
 ㄴ 새로운 클래스 작성시 바탕이 되는 부모 클래스 (목적: 자식 클래스들이 완성하게 하기 위해)



추상 클래스는 인스턴스 생성 불가
 ㄴ 그럼 어떻게?
 = 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 받아옴

왜 인스턴스를 직접 생성하지 않는가? (왜 메서드를 통해서 인스턴스를 받아 오는가?)
 ㄴ 최소한의 변경으로 프로그램이 동작하게 하기 위해서


ex.
인스턴스 생성하도록 프로그램이 작성되어 있다면
 = 다른 종류의 캘린더를 사용하는 국가에서 실행 시 (다른 종류의 인스턴스를 필요로 하는 경우)
 메인 클래스를 변경해야 하는 번거로움 존재

but 메서드를 통해서 인스턴스를 얻어오면 그런 번거로움 없음

 

 


abstract
 ㄴ 효과? 선언부 abstract 확인, 이 클래스의 추상 메서드가 있다는 것을 쉽게 알 수 있음

추상 메서드 포함한다는 것을 제외하고 일반 클래스와 다르지 않음
 1. 생성자 있음
 2. 멤버변수, 메서드 가질 수 있음
 3. 상속 가능
 4. 추상 메서드만 가지지도 않음

추상클래스 가질 수 있는 것
 ㄴ 멤버 변수
 ㄴ 클래스 변수
 ㄴ 생성자
 ㄴ 일반 멤버 메서드
 ㄴ        클래스 메서드
 ㄴ 추상 멤버 메서드

추상 클래스 목적
 - 자식 클래스의 구현 부담 감소



추상 메서드
 - 미완성 메서드 (선언부만 작성, 구현부 작성하지 않음) 
 - 실제 내용은 상속받는 클래스에서 구현하도록 비워둠
 ㄴ왜? 메서드 내용이 상속받는 클래스에 따라 달라질 수 있기 때문

abstract 리턴타입 메서드이름();

주의
 - 추상클래스를 상속받는 자식 클래스는 추상 메서드를 모두 구현해야 함
  ㄴ구현하지 못하면, 자식 클래스도 추상 클래스가 되야 함
 - 특정 내용 구현(메서드 재정의)를 강요