JAVA - 추상 클래스(Abstract Class)
추상(abstract)
- 실체들 간에 공통되고 중요한 특성을 추출하는 것
ex. 새, 곤충, 물고기 -> 동물(추상)
추상 클래스(abstract class)
- 실체 클래스들의 공통되는 필드와 메소드 정의한 클래스 (실체 클래스 : 객체를 만들어 사용할 수 있는 클래스)
- 추상 클래스는 실체 클래스의 부모 클래스 역할 (단독 객체 X, 즉 new x)
추상 클래스의 용도
- 실체 클래스의 공통된 필드와 메소드의 이름 통일할 목적
** 프로그래머 마다 다른 설정을 통일하기 위해서
- 실체 클래스를 작성할 때 시간 절약
** 실체 클래스는 추가적인 필드와 메소드만 선언
- 실체 클래스 설계 규격을 만들고자 할 때
** 실체 클래스가 가져야 할 필드와 메소드를 추상 클래스에 미리 정의
** 실체 클래스는 추상 클래스를 무조건 상속 받아 작성
추상 클래스 선언
- 클래스 선언에 abstract 키워드 사용
** new 연산자로 객체 생성하지 못하고 상속 통해 자식 클래스만 생성 가능(직접적인 new 불가능)
public abstract class 클래스 {
//필드
//생성자
//메소드
}
추상 메소드와 오버라이딩(재정의)
- 메소드 이름은 동일하지만, 실행 내용이 실체 클래스마다 다른 메소드
ex. 동물은 소리를 낸다(추상메소드) 하지만 실체 동물들의 소리는 제각기 다르다
- 구현 방법
** 추상 클래스에는 메소드의 선언부만 작성(추상 메소드)
[public | protected] abstract 리턴타입 메소드명(매개변수 .....);
** 실체 클래스에서 메소드의 실행 내용 작성(오버라이딩(Overriding))
--- 추상 메소드 ---
--- 상속받은 서브 클래스 Dog ---
---상속받은 서브 클래스 Cat ---
--- 메인 메소드 ---
'JAVA' 카테고리의 다른 글
JAVA 예외와 예외처리방법1 (0) | 2016.07.06 |
---|---|
자바 스레드(Thread), 스레드 우선순위 (0) | 2016.07.05 |
자바(JAVA) - this() (0) | 2016.05.22 |
자바 - 버블정렬(Bubble Sort) (0) | 2016.05.22 |
JAVA - 하나빼기게임(가위바위보 응용) (0) | 2016.04.07 |