반응형
this, this(), super, super()
우선 this와 this()에 대해 알아보겠습니다.
this
- 현재 클래스의 인스턴스, 인스턴스의 특정 필드를 지정할때 사용합니다.
자기 자신을 의미하는 참조변수로,
매개변수와 객체 자신이 가지고 있는 변수의 이름이 같은 경우 이를 구분하기 위해 사용합니다.
Class Test {
int a;
public void setA(int a) {
this.a = a;
}
}
Test test = new Test();
test.setA(10);
과 같이 setA() 메서드를 호출하게되면,
setA(int a) 로 전달된 int의 파라미터 a와 Test 클래스의 필드 값a 가 같은 이름입니다.
이럴 때 this를 붙여주면,
"이 a는 현재 메서드 setA(int a)의 파라미터인 a 가 아닌, 클래스 필드의 a 이다." 라는 것을 나타냅니다.
this()
- 생성자를 부르기 위해 사용합니다.
다양한 방법으로 인스턴스를 생성할 수 있도록 여러 종류의 생성자를 준비 했을때, this() 가 유용하게 사용할 수 있습니다.
객체 생성자에서 사용 시 다른 생성자를 호출합니다. (this()는 맨 윗줄에 적어야 합니다.)
Class Person {
int age;
String name;
public Person() {
this(0, null);
}
public Person(int age) {
this(age, null);
}
public Person(int age, String name) {
this(age, name);
}
}
다음은 super와 super()에 대해 알아보겠습니다.
super
- 상위(부모) 클래스의 멤버 변수나 메서드를 사용하기 위한 변수 호출을 말합니다.
super 는 '부모 클래스에 있는 필드나 메서드를 사용하라' 라는 의미로 붙여주는 예약어입니다.
super로 멤버 변수나 메서드를 호출하기 위해서는 해당 변수나 메서드의 접근 제어자는 반드시 protected 혹은 public 이여야 합니다.
super.변수명
=> 상위 클래스의 멤버 변수를 호출합니다.
super.메서드명()
=> 상위 클래스의 메서드를 호출합니다.
class Person() {
public void info() {
}
}
class Student extends Person {
public void profile() {
info(); // 재정의한 info()가 우선 순위가 됩니다.
super.info(); // super를 사용했기 때문에 상위 클래스에 있는 info() 가 호출됩니다.
}
public void info() {
}
}
super() / super(매개변수)
- 상위(부모) 클래스의 생성자를 호출합니다.
현재 자식 클래스가 자신을 생성할 때 부모 클래스의 생성자를 불러서 초기화 해주고 나서 자신을 초기화합니다.
(반드시 맨 윗줄에 적어야 합니다.)
반응형
'IT > JAVA' 카테고리의 다른 글
자바 제어문 (Control Flow Statement) 분기문 break문, continue문 (0) | 2018.01.04 |
---|---|
자바 생성자 (Constructor) (0) | 2018.01.03 |
인터페이스(Interface) 정의 및 사용 이유 (장점) (0) | 2017.12.29 |
자바 접근제어자 (Access Modifier) (0) | 2017.12.29 |
추상 클래스(Abstract Class)와 추상 메서드(Abstract Method) (0) | 2017.12.29 |