Lewis's Tech Keep

6/21 TIL (상속) 본문

Java/개체지향 프로그래밍 with JAVA

6/21 TIL (상속)

Lewis Seo 2021. 6. 21. 18:38

 - 이미 존재하는 클래스를 기반으로 새 클래스를 만드는 방법

 

 - 생성자 호출 순서 

 : 부모없이 자식이 생길 수 없다 (생물학적 관계라면!)

 : 1. 메모리에 개체 생성 2. 부모 생성자 호출 3. 자식 생성자 호출

 : 부모 생성자를 어떤 생성자를 할 지 정하지 않는다면 기본 생성자를 호출함.

 

 - 개체는 생성 시 부터 유요한 상태를 가져야 한다.

 

 - 자식 생성자에서 부모 생성자 호출 방법

 : super();

 

 - super 키워드

 : 현 개체의 부모 부분을 가리킴

 : 부모의 멤버 변수 or 메서드 호출할 때도 사용한다.

 

 - 부모가 자식을 호출할 수는 없다. (자식을 상속 받지 않기 때문에 = 받는 것은 불가능하기 때문)

 

 - 부모 접근 방법

 : protected 접근 제어자로 변경.

 

 - protected

 : 외부자들은 접근할 수 없음

 : 클래스 내부, 같은 패키지에 속한 클래스, 자식 클래스에서 접근 가능

 : 내포 클래스에 한 해 붙일 수 있음 ( protected class 의 경우)

 

 - is-a, has-a 관계

 : is-a -> 상속, has-a -> 컴포지션

 

 - 상속 vs 컴포지션

 : 둘 다 재사용성을 위한 방법

 : oo에서 큰 결정사항 중 하나 : 상속 vs 컴포지션 고르기

 

 - 자식 <- 부모는 명시적 캐스팅으로만 가능!

 

 - 캐스팅 중에 자식 -> 부모 변경 -> 다른 자식 명시적 캐스팅은 오류를 발생시킨다.

 : 오류는 런타임 오류 발생(ClassCastException)

 

 - 부모형 변수에 저장된 개체가 실제 어떤 자식형인지 알 방법이 필요

 : instanceOf 필요성 대두(RTTI)

 

 - instanceOf 와 비슷한 기능을 가진 getClass()

 : 개체의 정보를 가져 옴

 : getClass().getName() 클래스의 이름 가져옴

 

 - Object 클래스

 : Java의 모든 클래스는 Object 클래스를 상속함

 

 

Comments