forDevLife
[생활코딩-자바입문] 상속과 생성자 본문
생활코딩 26. 상속과 생성자
1) 기본 생성자
- 자기 자신을 인스턴스화하는 클래스가 가능하다.
- 생성자를 정의하지 않을 경우, 기본 생성자가 실행된다. 만약 생성자를 매개변수가 있도록 정의하면, 아래처럼 오류
- 다음처럼, 인자가 없는 생성자를 필히 생성해줘야 한다.
2) super
- 상속받는 자식클래스 생성 시, 부모 클래스의 기본 생성자를 자동으로 호출하게 됨. 만약 부모 클래스에 사용자 정의(매개변수 있는) 생성자가 있게 된다면 자바는 자동으로 부모 클래스의 기본 생성자를 만들어 주지 않게 된다.
- 따라서 자식이 부모의 기본 생성자를 호출하게 되면 에러가 발생한다. 없기 때문에. 이를 해결하기 위해 부모 클래스의 생성자를 만든다.
- 하지만, 대부분 부모 클래스 / 자식 클래스의 생성자는 같은 일을 중복적으로 하고 있다.
- super 키워드로 해결한다. 아래와 같이, super를 통해 부모클래스의 생성자를 호출한다. 다만 부모 클래스에는 생성자가 두 개 정의되어야 오류가 발생하지 않는 것으로 보인다.
- 또 한가지 유의할 점은, 하위 클래스의 초기화 코드는 항상 상위 클래스 생성자 호출(super) 다음에 나타나야 한다는 것이다.
부모 클래스가 초기화 되기 전, 자식이 먼저 초기화 되는 걸 방지하기 위함이다. 자식이 다 초기화 해놨는데(실질적으로 사라지면 안되는 부분) super로 덮어버리면 의미없기 때문이다.
package org.opentutorials.javatutorials.scope;
class substractcalculator extends Calculator {
public substractcalculator(int left, int right) {
super(left, right); // 이 부분 주목
}
public void substract() {
System.out.println(this.left - this.right);
}
}
public class calculatorconstructordemo4 {
public static void main(String[] args) {
substractcalculator c1 = new substractcalculator(10, 20);
c1.sum();
c1.avg();
c1.substract();
}
}
'Java' 카테고리의 다른 글
[생활코딩-자바입문] 핵심 요약 5 (0) | 2020.11.15 |
---|---|
[생활코딩-자바입문] 핵심 요약 4 (0) | 2020.11.11 |
[생활코딩-자바입문] 핵심 요약 3 (0) | 2020.11.08 |
[생활코딩-자바입문] 핵심 요약 2 (0) | 2020.11.08 |
[생활코딩-자바입문] 핵심 요약 (0) | 2020.11.06 |
Comments