생성자 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 |
'Language > Java' 카테고리의 다른 글
캐스팅 (0) | 2020.06.09 |
---|---|
레퍼런스(참조형) 형변환 (0) | 2020.06.05 |
레퍼런스 super (0) | 2020.06.05 |
접근제한자 (0) | 2020.06.05 |
메서드 오버라이딩 (Method Overriding) = 메서드 재정의 (0) | 2020.06.05 |