-
CHAPTER 7. (7) 추상 클래스란? (추상 메서드 포함)java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2 2020. 4. 2. 13:50
추상 클래스
- 미완성 설계도
- 추상 메서드 (미완성 메서드) 를 포함한 클래스
- 추상 클래스로 인스턴스 생성 불가
- 상속을 통해서 자식 클래스에 의해서 완성 가능
사용 이유?
ㄴ 새로운 클래스 작성시 바탕이 되는 부모 클래스 (목적: 자식 클래스들이 완성하게 하기 위해)
★
추상 클래스는 인스턴스 생성 불가
ㄴ 그럼 어떻게?
= 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 받아옴
왜 인스턴스를 직접 생성하지 않는가? (왜 메서드를 통해서 인스턴스를 받아 오는가?)
ㄴ 최소한의 변경으로 프로그램이 동작하게 하기 위해서
★
ex.
인스턴스 생성하도록 프로그램이 작성되어 있다면
= 다른 종류의 캘린더를 사용하는 국가에서 실행 시 (다른 종류의 인스턴스를 필요로 하는 경우)
메인 클래스를 변경해야 하는 번거로움 존재
but 메서드를 통해서 인스턴스를 얻어오면 그런 번거로움 없음
abstract
ㄴ 효과? 선언부 abstract 확인, 이 클래스의 추상 메서드가 있다는 것을 쉽게 알 수 있음
추상 메서드 포함한다는 것을 제외하고 일반 클래스와 다르지 않음
1. 생성자 있음
2. 멤버변수, 메서드 가질 수 있음
3. 상속 가능
4. 추상 메서드만 가지지도 않음
추상클래스 가질 수 있는 것
ㄴ 멤버 변수
ㄴ 클래스 변수
ㄴ 생성자
ㄴ 일반 멤버 메서드
ㄴ 클래스 메서드
ㄴ 추상 멤버 메서드
추상 클래스 목적
- 자식 클래스의 구현 부담 감소
추상 메서드
- 미완성 메서드 (선언부만 작성, 구현부 작성하지 않음)
- 실제 내용은 상속받는 클래스에서 구현하도록 비워둠
ㄴ왜? 메서드 내용이 상속받는 클래스에 따라 달라질 수 있기 때문
abstract 리턴타입 메서드이름();
주의
- 추상클래스를 상속받는 자식 클래스는 추상 메서드를 모두 구현해야 함
ㄴ구현하지 못하면, 자식 클래스도 추상 클래스가 되야 함
- 특정 내용 구현(메서드 재정의)를 강요'java > ㄴ CHAPTER 7. 객체지향 프로그래밍 2' 카테고리의 다른 글
CHAPTER 7. (9) 내부 클래스란? (인스턴스, 스태틱, 지역, 익명 클래스 포함) (0) 2020.04.02 CHAPTER 7. (8) 인터페이스란? ★ (0) 2020.04.02 CHAPTER 7. (6) 다형성이란? (참조변수 형변환, 매개변수 다형성, instanceof연산자 포함) ★★ (0) 2020.04.02 CHAPTER 7. (5) abstract란? (get, set 포함) (0) 2020.04.02 CHAPTER 7. (4) 제어자란? (static, final 포함) (0) 2020.04.02