티스토리 뷰
- this, this(), super, super()
this : 파라미터명과 객체가 가지고 있는 변수명이 같을 때 객체가 가지고있는 변수를 가르키기 위해 사용한다.
- ex)
class Test {
int a;
Test(int a){
this.a = a; // this.a는 전역변수 a를 가르킨다.
}
}
this() : 객체가 가지고 있는 생성자를 호출한다.
- ex)
class Test {
int a;
String b;
Test(int a){
this.a = a;
}
Test(int a, String b){
this(a); // Test(int a) {...} 생성자를 호출한다.
this.b = b;
}
}
* 주의사항 : this()는 맨위에 작성해야한다. 그리고 생성자 이외의 메소드에서는 사용할 수 없다.
super : 자식클레스에서 부모클레스의 변수나 메소드를 호출할 때 사용한다.
- ex)
class TestA {
int a = 10;
int get(){
return a;
}
}
class TestB extends TestA {
int b;
TestB(){
b = super.a; // A클레스의 변수 a에 할당되어있는 10이 변수 b에
}
int getSuper(){
return super.get();
}
}
super() : 자식클레스에서 부모클레스의 생성자를 호출할 때 사용한다.
- ex)
class TestA {
int a;
TestA(int a){
this.a = a;
}
}
class TestB extends TestA {
TestB(int a) {
super(a); // A클레스의 생성자가 호출된다.
}
}
* 주의사항 : 상속을 받는 자식클레스의 생성자에서는 보이지는 않지만 super()가 자동으로 생성되기 때문에 위의 코드에서 super(a); 를 지우면 TestB 클레스에서 에러가 발생한다. 만약 super(a);를 쓰지 않으려면 아래와 같이 수정해야한다.
class TestA {
int a;
TestA(){} // 추가된 코드
TestA(int a){
this.a = a;
}
}
'java&spring' 카테고리의 다른 글
인터페이스(interface) (0) | 2016.08.06 |
---|---|
[Java] 생성자 (0) | 2016.08.04 |
[Java] 오버라이딩 vs 오버로딩 (0) | 2016.07.29 |
[Java] try-with-resources (0) | 2016.07.25 |
삼항 연산자 (0) | 2016.07.23 |