티스토리 뷰

java&spring

this, this(), super, super()

sungjine 2016. 8. 2. 19:25
반응형

 - 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
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday
글 보관함
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31