Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

자바 프로그램에서 super()와 this()의 차이점

<시간/>

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