this

 

this는 곧 자기자신을 뜻한다.

다시 말해 해당클래스(상속관계에서 하위클래스에 속하는)이름을 뜻한다.

this()는 생성자를 말하며, 생성자에서 다른 생성자를 부를 시 사용한다.

예를 들어, Car라는 클래스에 Car()라는 생성자와 Car(String color, int door)라는 생성자가

있을 때,


String color;
int door;
Car(){
         this(
red, 4);

} 

 

Car( String c, int d)

{

        color = c;
        door = d;

}      

이런식으로 사용할 수 있다.

또한 this를 사용하여 변수나 메서드를 호출할 수 있다.


String color;
int door;
Car(){
         this(red, 4);

} 

 

Car( String color, int door)

{

        this.color = color;
        this.door = door;

}      

이렇게 매개변수이름과 인스턴스변수이름을 구분하는데 주로 사용한다.

 

this생성자 호출은 생성자 첫 줄에서 이뤄져야 한다.

 

super

 

Super는 곧 상위클래스를 뜻하며 상위클래스의 멤버(멤버변수,메서드)를 참조하는데 사용한다.

상위클래스에서 선언한 멤버와 하위클래스에서 선언한 멤버가 중복될 경우 서로 구별하기 위해서 사용한다.

class SuperTest {
      public static void main(String args[]) {
            Child c = new Child();
            c.method();
      }
}

class Parent {
      int x=10;
}

class Child extends Parent {
      int x=20;
      void method() {
            System.out.println("x=" + x);
            System.out.println("this.x=" + this.x);
            System.out.println("super.x="+ super.x);
      }
}

위 결과에서는 x= 20, this.x = 20, super.x = 10 이 나온다.

 

super() this()와 마찬가지로 생성자이며 상위클래스의 생성자를 호출한다.

 

super생성자도 this와 마찬가지로 생성자 첫 줄에서 호출되어야 한다.

 

 

Posted by 윤연식
,