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와 마찬가지로 생성자 첫 줄에서 호출되어야 한다.