logo

Java의 super와 this의 차이점

그만큼 '이것' 그리고 ' 감독자' 키워드는 다른 문맥에서 사용되는 예약어입니다. 이 외에도 Java도 제공합니다. 이것() 그리고 감독자() 생성자 컨텍스트에서 사용되는 생성자. 이 섹션에서는 this 키워드와 super 키워드의 차이점 그리고 this() 및 super() 생성자, 자바에서.

super 키워드 및 super() 생성자

슈퍼 키워드

기본 클래스 메서드나 변수를 호출하는 데 사용되는 예약어를 감독자 예어. 우리는 사용할 수 없습니다 감독자 키워드로 식별자 . super 키워드는 기본 클래스 인스턴스를 참조하는 데뿐만 아니라 정적 멤버도 참조하는 데 사용됩니다.

슈퍼() 생성자

그만큼 감독자() 주로 기본 클래스 멤버 함수 및 생성자를 호출하는 데 사용됩니다.

두 가지 모두의 예를 들어보자. 감독자 키워드와 감독자() 그들이 어떻게 작동하는지 이해합니다.

SuperExample1.java

 // import required classes and packages package javaTpoint.MicrosoftJava; // create Animal class which is base class of Animal class Animal{ // data member of Animal class String color = 'white'; } // create child class of Animal class Cat extends Animal{ //default constructor Cat() { // data members of the Cat class String color = 'Brown'; System.out.println('The cat is of color '+super.color); // calling parent class data member System.out.println('The cat is of color '+color); } } // create child class for Car class SuperExample1 extendsCat { // default constructor SuperExample1() { // calling base class constructor super(); System.out.println('The eyes of the cat is blue.'); } // main() method start publicstaticvoid main(String[] args) { // call default constructor of the SuperExample1 new SuperExample1(); System.out.println('Inside Main'); } } 

산출:

Java의 this와 super

main() 메소드에서 다음과 같은 문장을 작성했습니다. 새로운 SuperExample1() . 이는 생성자를 호출합니다. 슈퍼예1 수업.

생성자 내부에서 다음과 같은 명령문을 작성했습니다. 감독자() 이는 상위 클래스의 생성자를 호출합니다. 즉, 고양이. 생성자에서 우리는 세 가지 명령문을 작성했습니다.

  1. 값으로 색상 초기화 '갈색'.
  2. 상위 클래스 데이터 멤버를 인쇄합니다.
  3. 현재 클래스 데이터 멤버를 인쇄합니다.

두 번째 문이 실행되면 프로그램 흐름이 Animal 클래스로 점프하여 해당 데이터 멤버의 값에 액세스합니다. 액세스한 후 흐름은 다음으로 돌아옵니다. 고양이 클래스 생성자를 만들어 인쇄합니다. 그 후 마지막 문이 실행되어 현재 클래스의 변수 값을 인쇄합니다.

마지막 명령문을 실행한 후 고양이 클래스가 있으면 흐름이 클래스 생성자로 돌아갑니다. 슈퍼예1 나머지 명령문을 실행합니다.

김프 글꼴 목록

실행을 완료한 후 슈퍼예제1() , 흐름은 main() 메서드로 돌아가 나머지 문을 실행합니다.

참고: super()를 사용하려면 클래스 생성자의 첫 번째 명령문이어야 합니다. 이를 사용하여 상위 클래스 생성자만 참조할 수 있습니다.

this 키워드 및 this() 생성자

이 키워드

현재 클래스 객체를 참조하는 데 사용되는 Java의 예약어입니다. 메소드가 호출되는 참조변수입니다. 이 키워드의 다른 용도는 다음과 같습니다.

  • 이를 사용하여 현재 클래스 인스턴스 변수를 참조할 수 있습니다.
  • 이를 사용하여 현재 클래스 메서드를 (암시적으로) 호출할 수 있습니다.
  • 메서드 및 생성자 호출에서 인수로 전달할 수 있습니다.
  • 메소드에서 현재 클래스 인스턴스를 반환하는 데에도 사용할 수 있습니다.

this() 생성자

생성자는 동일한 클래스의 다른 생성자에서 하나의 생성자를 호출하는 데 사용됩니다. 둘 다의 예를 들어보자 이것 키워드와 이것() 그들이 어떻게 작동하는지 이해합니다.

ThisExample1.java

 // import required classes and packages package javaTpoint.MicrosoftJava; // create ThisExample1 class to understand the working of this() and this class ThisExample1 { // initialize instance and static variable int x = 5; staticinty = 10; // default constructor of class ThisExample1 ThisExample1() { // invoking current class constructor this(5); System.out.println('We are insie of the default constructor.'); System.out.println('The value of x = '+x); } ThisExample1(int x) { this.x = x; // override value of the current class instance variable System.out.println('We are inside of the parameterized constructor.'); System.out.println('The value of y = '+y); } publicstaticvoid main(String[] args) { // invoking constructor of the current class new ThisExample1(); System.out.println('Inside Main'); } } 

산출:

Java의 this와 super

this 키워드와 super 키워드의 차이점

다음 표에서는 이것과 super의 주요 차이점을 설명합니다.

이것 감독자
클래스의 현재 인스턴스는 이 키워드로 표시됩니다. 상위 클래스의 현재 인스턴스는 super 키워드로 표시됩니다.
현재 클래스의 기본 생성자를 호출하기 위해 이 키워드를 사용할 수 있습니다. 상위 클래스의 기본 생성자를 호출하려면 super 키워드를 사용할 수 있습니다.
정적 컨텍스트에서 참조할 수 있습니다. 이는 정적 컨텍스트에서 호출될 수 있음을 의미합니다. 정적 컨텍스트에서는 참조할 수 없습니다. 이는 정적 컨텍스트에서 호출할 수 없음을 의미합니다.
이를 사용하여 현재 클래스 데이터 멤버 및 멤버 함수에만 액세스할 수 있습니다. 이를 사용하여 상위 클래스의 데이터 멤버 및 멤버 함수에 액세스할 수 있습니다.

this()와 super() 생성자의 차이점

이것() 감독자()
this() 생성자는 현재 클래스 객체를 참조합니다. super() 생성자는 직계 상위 클래스 객체를 참조합니다.
현재 클래스 메서드를 호출하는 데 사용됩니다. 상위 클래스 메소드를 호출하는 데 사용됩니다.
매개변수화된 생성자의 어느 곳에서나 사용할 수 있습니다. 이는 항상 하위 클래스 생성자의 첫 번째 줄입니다.
재정의된 메서드의 슈퍼클래스 버전을 호출하는 데 사용됩니다. 재정의된 메서드의 슈퍼클래스 버전을 호출하는 데 사용됩니다.