*추상클래스 개념

- 추상은 사전적 의미로 실체간의 공통되는 특성을 추출하는 것

- 실체클래스들의 공통특성을 추출해서 선언한 클래스를 추상클래스

- 추상클래스와 실체클래스는 상속관계에 있고 추상클래스의 모든 특성을 물려받음

- 추상클래스로는 직접 객체를 생성할 수 없다.

 

*추상클래스 용도

- 표준화: 실체클래스들의 공통된 필드와 메소드의 이름을 통일할 목적

(개발자간 문서설계로도 가능하지만 추상클래스로 잘 설계해놓으면 코드만 보고도 실체클래스들을 구현할 수 있다.)

- 개발시간단축: 실체클래스를 작성할 때 시간 절약

(공통적인 필드와 메소드는 추상클래스에 정의해두고 실체클래스마다 다른기능만 개발하면 개발시간을 단축시킬수있다.)

- 사내에서도 BaseBatch 라는 추상클래스가 있어서 이를 상속받아 배치를 구현하는 프로세스가 있다.

- *잘만들어진 추상클래스는 프레임워크나 오픈소스같은 곳에서 유용하게 사용되고있다.

(메인로직은 추상클래스에 정의하고 구현체에서는 각 애플리케이션 기능의 특성을 담는 구조로 개발가능)

 

*자바는 다중상속이 불가능하지만 인터페이스로 다중상속 가능

*인터페이스는 다음시간에!

 

 

[ 확인문제 ]

1 - 1

자바는 다중상속을 허용하지 않음

 

2 - 2

부모-자식 상속 관계에서 자식클래스를 자동타입변환한 부모클래스에 대해서만 강제타입변환이 가능

// 자동타입변환을 하면 부모클래스에 있는 메소드만 사용할수있는 제약이 생기기때문

 

3 - 1

final 클래스로 상속을 할수없기 때문에 부모클래스가 될수없음

 

4 - 4

protected 접근제한을 갖는 메소드는 다른 패키지의 자식클래스에서 재정의 가능

 

5

자식클래스의 생성자에서 자동으로 super(); 를 호출하는데

부모클래스에 디폴트 생성자가 없음 (매개변수생성자가 있으면 내부적으로 디폴트생성자 안생김)

이를 해결하기 위해서는 부모클래스에 디폴트생성자를 추가하거나

자식클래스에서 부모클래스의 매개변수생성자를 명시적으로 호출하면됨

 

6

Parent(String nation) call

Parent() call

Child(String name) call

Child() call

 

7

일반타이어가 굴러갑니다.

스노우타이어가 굴러갑니다.

// 자동타입변환을 해도 해당 객체로는 부모클래스의 메소드만 접근 가능

 

8 - 2

자식클래스를 자동타입변환한 부모클래스에 대해서만 강제타입변환이 가능

'Language > Java' 카테고리의 다른 글

자바 커뮤니티3 - 인터페이스  (0) 2019.06.05
자바 커뮤니티1 - Class  (0) 2019.05.22
Java 문자열 객체  (0) 2018.08.04
Java 배열 선언, 초기화  (0) 2018.08.04
Java 접근지정자 (Access Modifier)  (0) 2018.08.04

+ Recent posts