Language/Java
생성자 super()
태윤2
2020. 6. 5. 00:45
생성자 super()
-슈퍼클래스의 생성자를 명시적으로 호출
목적1) 슈퍼클래스의 생성자 중 특정 생성자를 명시적으로 호출해야하는 경우 사용
ex) 슈퍼클래스에 기본생성자 없이 파라미터 생성자만 정의할 경우
서브클래스에서 슈퍼클래스의 기본생성자를 호출하지 못해 오류 발생
이 때, 슈퍼클래스의 파라미터 생성자를 명시적으로 호출할 때 사용
목적2) 슈퍼클래스의 생성자에서 초기화하는 코드가 존재할 경우
ex) 서브클래스의 생성자에서 슈퍼클래스의 멤버변수까지 초기화하면 코드 중복 발생
이 때, 슈퍼클래스의 멤버는 슈퍼클래스의 생성자에서, 서브클래스의 멤버는
서브클래스의 생성자에서 초기화하여 중복을 제거하기 위해 사용
주의! 생성자 super() 는 반드시 생성자 내에서 첫번째 문장으로 실행되어야 한다
=> 생성자 내에 super() 와 this() 를 동시에 사용 불가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
class Spiderman extends Person {
boolean isPaiderMode;
public Spiderman(){
//super(); 암묵적으로 포함됨 this("피터파커", 20, false);
}
public Spiderman(String name, int age, boolean isSpaiderMode) {
super(name,age);
this.isSpaiderMode = isSpaiderMode;
}
}
|
cs |