개발자를 꿈꾸는 여정

[JAVA 자바] 6. 상속(Inheritance) 본문

2. Back Developer

[JAVA 자바] 6. 상속(Inheritance)

아카라타 2021. 10. 24. 21:52

1. 상속이란

- 객체지향프로그램 :

•자식(하위, 파생) 클래스가 부모(상위) 클래스의 멤버를 물려받는 것

•자식이 부모를 선택해 물려받음

•상속 대상: 부모의 필드와 메소드

2. 상속 효과

•부모 클래스 재사용해 자식 클래스 빨리 개발 가능

•반복된 코드 중복 줄임

•유지 보수 편리성 제공

•객체 다형성 구현 가능

 

- 대상 제한

•부모 클래스의 private 접근 갖는 필드와 메소드 제외

•부모 클래스가 다른 패키지에 있을 경우, default 접근 갖는 필드와 메소드도 제외

 

3. extends 키워드

- 자바는 단일상속 <부모클래스 나열 불가>

4. 부모 생성자 호출 (super(…))

•자식 객체 생성할 때는 부모 객체부터 생성 후 자식 객체 생성

•부모 생성자 호출 완료 후 자식 생성자 호출 완료

 

- 명시적인 부모 생성자 호출

•부모 객체 생성할 때, 부모 생성자 선택해 호출

•super(매개값,…)  > 매개값과 동일한 타입, 개수, 순서 맞는 부모 생성자 호출

 

•부모 생성자 없다면 컴파일 오류 발생

 

•반드시 자식 생성자의 첫 줄에 위치

 

•부모 클래스에 기본(매개변수 없는) 생성자가 없다면 필수 작성

 

5. 메소드 재정의 (Override) : 부모 클래스의 상속 메소드 수정해 자식 클래스에서 재정의하는 것

 

- 조건 : 

•부모 클래스의 메소드와 동일한 시그니처 가져야

•접근 제한을 더 강하게 오버라이딩 불가

 > public을 default나 private으로 수정 불가

 > 반대로 default는 public 으로 수정 가능

새로운 예외(Exception) throws 불가

 

- 자식 클래스에서 수정되기 전 부모 메소드 호출 - super 사용

6. final 키워드 : 고정선언. 수정불가

final 필드: 수정 불가 필드

final 클래스: 부모로 사용 불가한 클래스

final 메소드: 자식이 재정의할 수 없는 메소드

 

7. 접근제한자

- 같은 패키지 : default와 동일

- 다른패키지 : 자식클래스만 접근 허용

8. 타입의 변환과 다형성 :

- 같은 타입이지만 실행 결과가 다양한 객체 대입(이용) 가능한 성질

- 자동 타입변환

 

9. 추상 클래스 (abstract class)

- 선언 : 클래스 선언에 abstract 키워드 사용

 

실체 클래스들의 공통되는 필드와 메소드 정의한 클래스

추상 클래스는 실체 클래스의 부모 클래스 역할 (단독 객체 X)

 

New 연산자로 객체 생성하지 못하고 상속 통해 자식 클래스만 생성 가능