목차
1.1 상속: 필드
1.2 상속: 메소드
1.3 상속: 생성자
1.4 상속: 접근제어자
1. 상속(Inheritance) → ★SuperSub00 / SuperSub01 참고
- 자식(하위, 파생) 클래스가 부모(상위) 클래스의 멤버를 물려받는 것
- 상속 대상: 부모의 필드와 메소드 (생성자는 상속 X)
- 상속 방법: ‘자식 클래스명’ extends ‘부모 클래스명’
1) 상속에서의 필드 → ★SuperSub04 / SuperTest02~04 참고
• 은닉 변수(= 쉐도우 변수)
: 부모 클래스에 있는 필드를 자식 클래스에서 재정의(동일한 이름의 변수를 생성)하면, 기본적으로 자식 클래스에서 재정의한 필드만 사용 가능하다.
- super : 부모 클래스를 의미한다.
- super.X : 부모 클래스의 은닉된 필드를 호출할 때 사용된다.
- super.X는 자식 클래스의 메소드 안에서만 사용할 수 있다.
* super. - 부모 클래스에 있는 은닉된 멤버변수와 메소드를 호출할 때 사용
* super() - 부모 클래스의 매개변수를 가진 생성자를 호출할 때 사용
2) 메소드 오버라이딩(Method Overriding) → ★SuperSub05 참고
- 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의해서 사용하는 것
- 은닉 메소드는 super.메소드명()으로 호출할 수 있고, 자식 클래스의 메소드 안에서 이루어져야 한다.
3) 상속에서의 생성자
1. 생성자는 기본적으로 상속이 되지 않는다.
2. 자식클래스를 이용해서 객체를 생성할 때 자식클래스의 생성자(기본생성자, 매개변수 있는 생성자 모두 가능)가 호출되면, 부모클래스의 기본생성자가 자동으로 호출된다.
→★SuperTest05 참고
3. 매개변수가 있는 생성자가 있는 경우에는 더이상 컴파일러가 기본 생성자를 자동으로 생성해 주지 않는다. →★SuperTest06 참고
4. 부모 클래스의 매개변수가 있는 생성자를 자식 클래스에서 호출할 때는 super()를 이용해서 호출할 수 있다. →★SuperTest06 참고
(단, super()는 자식 클래스의 생성자 안에서만 사용 가능함.)
5. super()를 이용해서 부모 클래스의 생성자를 호출할 때, 부모 클래스 기본 생성자는 호출되지 않는다. →★SuperTest06 참고
4) 접근제어자 protected
① 상속 관계 O / 같은 패키지 O
- 2개의 클래스(부모, 자식 클래스)가 같은 패키지 안에 들어있을 때는 부모의 접근제어자가 default, protected, public 접근제어자인 경우에 자식 클래스에서 접근할 수 있다. (단, private접근제어자만 자식 클래스에서 접근할 수 없음)
② 상속 관계 O / 같은 패키지 X
- 2개의 클래스(부모, 자식 클래스)가 다른 패키지 안에 들어있을 때는 부모의 접근제어자가 protected, public 접근제어자인 경우에 자식 클래스에서 접근할 수 있다.
③ 상속 관계 X / 같은 패키지 X
- 2개의 클래스가 서로 다른 패키지 안에 들어 있을 때는 public 접근제어자로 되어 있어야만 다른 클래스에서 접근할 수 있다.
'Java' 카테고리의 다른 글
14일차: Java 레퍼런스 형변환/자료구조 - 2021.07.02 (0) | 2021.07.02 |
---|---|
13일차: Java 추상클래스/인터페이스/레퍼런스형변환 - 2021.07.01 (0) | 2021.07.01 |
11일차: Java split()메소드/Wrapper클래스/상속 - 2021.06.29 (0) | 2021.06.29 |
10일차: Java 문자열 관련 클래스 - 2021.06.28 (0) | 2021.06.28 |
9일차: Java 패키지/접근 제어자/날짜시간 관련 클래스 - 2021.06.25 (0) | 2021.06.25 |