산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바 메소드 재정의

자바 메소드 재정의

이 자습서에서는 예제를 통해 Java의 메서드 재정의에 대해 배웁니다.

지난 튜토리얼에서 상속에 대해 배웠습니다. 상속은 기존 클래스(수퍼클래스)에서 새 클래스(서브클래스)를 파생할 수 있게 해주는 OOP 속성입니다. 하위 클래스는 상위 클래스의 속성과 메서드를 상속합니다.

이제 동일한 메서드가 슈퍼클래스와 서브클래스 모두에 정의되어 있으면 서브클래스 클래스의 메서드가 슈퍼클래스의 메서드를 재정의합니다. 이를 메서드 재정의라고 합니다.

<시간>

예제 1:메소드 재정의

class Animal {
   public void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   @Override
   public void displayInfo() {
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

출력 :

I am a dog.

위 프로그램에서 displayInfo() 메소드는 Animal 슈퍼클래스와 하위 클래스.

displayInfo()를 호출할 때 d1 사용 개체(하위 클래스의 개체), 하위 클래스 Dog 내부의 메서드 라고 합니다. displayInfo() 하위 클래스의 메서드가 슈퍼 클래스의 동일한 메서드를 재정의합니다.

@Override 사용에 주의하세요. 우리의 예에서 주석. Java에서 주석은 컴파일러에 정보를 제공하는 데 사용한 메타데이터입니다. 여기서 @Override 주석은 이 주석 뒤의 메소드가 수퍼클래스의 메소드를 재정의하는 컴파일러를 지정합니다.

@Override를 반드시 사용해야 하는 것은 아닙니다. . 그러나 이것을 사용할 때 메서드는 재정의의 모든 규칙을 따라야 합니다. 그렇지 않으면 컴파일러에서 오류가 발생합니다.

<시간>

자바 재정의 규칙

<시간>

자바 재정의의 슈퍼 키워드

Java에서 재정의를 수행하는 동안 발생하는 일반적인 질문은 다음과 같습니다.

재정의 후 수퍼클래스의 메소드에 액세스할 수 있습니까?

답은 입니다. . 하위 클래스에서 상위 클래스의 메서드에 액세스하려면 super을 사용합니다. 키워드.

예시 2:슈퍼 키워드 사용

class Animal {
   public void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   public void displayInfo() {
      super.displayInfo();
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

출력 :

I am an animal.
I am a dog.

위의 예에서 서브클래스 Dog displayInfo() 메서드를 재정의합니다. 슈퍼클래스 동물의 .

displayInfo() 메서드를 호출할 때 d1 사용 의 개체 서브클래스, Dog 내부의 메소드 하위 클래스가 호출됩니다. 슈퍼클래스 내부의 메소드는 호출되지 않습니다.

displayInfo() 내부 하위 클래스에서는 super.displayInfo()을 사용했습니다. displayInfo() 호출 슈퍼 클래스의.

<시간>

Java의 생성자는 상속되지 않는다는 점에 유의하는 것이 중요합니다. 따라서 Java에는 생성자 재정의와 같은 것이 없습니다.

그러나 하위 클래스에서 상위 클래스의 생성자를 호출할 수 있습니다. 이를 위해 super()를 사용합니다. . 자세한 내용은 Java 슈퍼 키워드를 참조하십시오.

<시간>

메서드 재정의의 액세스 지정자

슈퍼클래스와 그 서브클래스에서 선언된 동일한 메서드는 다른 액세스 지정자를 가질 수 있습니다. 단, 제한이 있습니다.

슈퍼클래스의 액세스 지정자보다 더 큰 액세스를 제공하는 서브클래스에서만 액세스 지정자를 사용할 수 있습니다. 예를 들어,

myClass() 메서드가 있다고 가정해 보겠습니다. 슈퍼 클래스에서 선언된 protected . 그런 다음 동일한 방법 myClass() 하위 클래스에서 public 또는 protected , 하지만 private는 아님 .

예 3:재정의의 액세스 지정자

class Animal {
   protected void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   public void displayInfo() {
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

출력 :

I am a dog.

위의 예에서 서브클래스 Dog displayInfo() 메서드를 재정의합니다. 슈퍼클래스 동물의 .

displayInfo()를 호출할 때마다 d1 사용 (서브클래스의 객체), 서브클래스 내부의 메소드가 호출됩니다.

displayInfo() 선언된 protected 동물에서 슈퍼클래스. 동일한 메소드에는 public이 있습니다. Dog의 액세스 지정자 아강. public protected보다 더 큰 액세스를 제공합니다. .

<시간>

추상 메소드 재정의

Java에서 추상 클래스는 다른 클래스의 상위 클래스로 생성됩니다. 그리고 클래스에 추상 메서드가 포함된 경우 이를 재정의해야 합니다.

추상 클래스와 추상 메서드 재정의에 대한 자세한 내용은 이후 자습서에서 알아보겠습니다.


java

  1. 자바 연산자
  2. 자바 리소스 사용
  3. 자바 주석
  4. 자바 주석 유형
  5. Java의 String Length() 메서드:예제로 찾는 방법
  6. 하위 문자열 및 예제가 있는 Java 문자열 indexOf() 메서드
  7. 예제가 있는 Java 문자열 charAt() 메서드
  8. Java String compareTo() 메서드:예제와 함께 사용하는 방법
  9. Java 문자열 contains() 메소드 | 예제로 하위 문자열 확인
  10. 예제가 포함된 Java 문자열 endWith() 메서드