의존성 주입(Dependency Injection)
생성자를 이용하여 의존성을 주입
상속 : 기존에 정의된 클래스에 메소드와 필드를 추가하여 새로운 클래스를 만드는 것.
슈퍼 클래스(부모 클래스) : 상속을 해주는 부모 클래스(상위, 기반 클래스)
서브 클래스(자식 클래스) : 상속을 받는 자식 클래스(하위, 파생 클래스)
is-a 관계
일반적인 개념과 구체적인 개념과의 관계
상위 클래스가 일반적인 개념 클래스이고
하위 클래스가 구체적인 개념 클래스가 된다.
has-a관계
하나의 클래스가 다른 클래스의 멤버를 가지고 이용하는 구조
자바는 다중 상속을 지원하지 않는다. (c++는 지원)
상위 클래스의 멤버(필드 또는 메소드)가 private 접근 제한자인 경우 상속을 받을 수 없다.
하위클래스의 객체를 생성하는 경우
1) 상위클래스 필드 메모리 할당, 기본값으로 초기화, 초기화 수식 실행
2) 하위클래스 필드 메모리 할당, 기본값으로 초기화, 초기화 수식 실행
3) 상위클래스 생성자 몸체 실행
4) 하위클래스 생성자 몸체 실행
super();
슈퍼클래스의 생성자 몸체 호출. 없으면 컴파일러가 추가
최상단에서 단 한번만 호출 가능
this([인수]); 와 함께 사용 불가
super 클래스에 인자가 있는 생성자만 존재하는 경우 아래처럼 생성자를 만들면
컴파일 오류가 발생한다. 이유는 아래 생성자는 super(); 코드가 추가 되고
슈퍼클래스에 인자가 없는 생성자가 없으므로
public Test4() { // 디폴트 생성자
super(); // 슈퍼클래스의 생성자 몸체 호출
슈퍼클래스에 인자가 있는 생성자만 있으면 하위 클래스는 생성자를 만들고
슈퍼클래스의 생성자를 반드시 호출해야 한다.
this([인수]); 호출했으므로 super([인수]); 호출 불가(최상단에 한번만 가능)
public(+) , protected(#) // UML
'Study > 쌍용' 카테고리의 다른 글
자바 추상 클래스 & 인터페이스 (0) | 2022.07.27 |
---|---|
자바 오버라이딩 & 캐스팅 (0) | 2022.07.26 |
자바 기본 API 클래스(2) (0) | 2022.07.23 |
자바 기본 API 클래스(1) (0) | 2022.07.22 |
자바 객체지향(3) (0) | 2022.07.21 |