다양한 다른 키워드와 함께 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}