다양한 다른 키워드와 함께 Java는 주로 클래스의 현재 인스턴스와 상위 클래스를 각각 나타내는 데 주로 사용되는 특수 키워드로 this 및 super를 제공합니다. 이러한 유사성으로 인해 두 키워드에는 다음과 같이 나열된 키워드 간에 상당한 차이가 있습니다.
| Sr. 아니요. | 키 | 이것 | 최고 |
|---|---|---|---|
| 1 | 표현 및 참조 | 이 키워드는 주로 클래스의 현재 인스턴스를 나타냅니다. | 반면에 super 키워드는 상위 클래스의 현재 인스턴스를 나타냅니다. |
| 2 | 클래스 생성자와의 상호 작용 | 같은 클래스의 기본 생성자를 호출하는 데 사용되는 키워드입니다. | 상위 클래스의 기본 생성자를 호출하는 데 사용되는 수퍼 키워드입니다. |
| 3 | 메소드 접근성 | 현재 클래스에 대한 참조가 있으므로 현재 클래스의 메소드에 액세스하는 데 사용되는 키워드입니다. | Super 키워드를 사용하여 상위 클래스의 메소드에 액세스할 수 있습니다. |
| 4 | 정적 컨텍스트 | 이 키워드는 정적 컨텍스트에서 참조할 수 있습니다. 즉, 정적 인스턴스에서 호출할 수 있습니다. 예를 들어 컴파일이나 런타임 오류 없이 x 값을 인쇄하는 System.out.println(this.x)을 작성할 수 있습니다. | 반면에 super 키워드는 정적 컨텍스트에서 참조할 수 없습니다. 즉, 정적 인스턴스에서 호출할 수 없습니다. 예를 들어 System.out.println(super.x)을 작성할 수 없으면 컴파일 시간 오류가 발생합니다. |
이것과 슈퍼의 예
Equals.jsp
class A {
public int x, y;
public A(int x, int y) {
this.x = x;
this.y = y;
}
}
class B extends A {
public int x, y;
public B() {
this(0, 0);
}
public B(int x, int y) {
super(x + 1, y + 1);// calls parent class constructor
this.x = x;
this.y = y;
}
public void print() {
System.out.println("Base class : {" + x + ", " + y + "}");
System.out.println("Super class : {" + super.x + ", " + super.y + "}");
}
}
class Point {
public static void main(String[] args) {
B obj = new B();
obj.print();
obj = new B(1, 2);
obj.print();
}
} 출력
Base class : {0, 0}
Super class : {1, 1}
Base class : {1, 2}
Super class : {2, 3}