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

Java 메서드 오버라이딩 마스터: 실전 예제, 핵심 규칙, super 키워드 활용

Java 메서드 오버라이딩 마스터하기

실전 예제, 핵심 규칙, 강력한 super 키워드 활용법과 함께 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. 

이 스니펫에서 Animal과 Dog 모두 displayInfo()를 선언합니다. Dog 인스턴스가 호출하면 하위 클래스 구현이 실행되어 오버라이딩을 시연합니다.

@Override 애너테이션에 주목하세요. 이는 메서드가 슈퍼클래스 버전을 대체해야 함을 컴파일러에 알립니다. 시그니처가 일치하지 않으면 컴파일러가 에러를 던집니다. 필수는 아니지만 실수를 방지하는 모범 사례입니다.

Java 메서드 오버라이딩 마스터: 실전 예제, 핵심 규칙, super 키워드 활용

Java 오버라이딩 규칙

super로 슈퍼클래스 메서드 호출

오버라이딩 후에도 부모 메서드를 호출할 수 있을까요? 물론입니다. super 키워드를 사용하세요.

예제 2: super 활용

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는 super로 Animal.displayInfo()를 먼저 호출한 후 자신의 메시지를 추가합니다.

생성자는 상속되지 않으므로 '생성자 오버라이딩'은 없습니다. 하지만 하위 클래스는 super()로 슈퍼클래스 생성자를 호출할 수 있습니다. Java super 키워드 가이드 참조.

오버라이딩 시 접근 수준

오버라이딩된 메서드는 가시성이 다를 수 있지만, 접근을 넓히는 방향만 허용됩니다.

슈퍼클래스 메서드가 protected면 하위 클래스는 protected 또는 public으로 선언 가능하지만 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. 

public이 protected보다 넓은 접근을 제공하므로 오버라이딩이 유효합니다.

추상 메서드 오버라이딩

추상 클래스는 본문 없이 메서드를 선언하는 경우가 많습니다. 구체적 하위 클래스는 구현을 제공해야 하며, 그렇지 않으면 컴파일러가 에러를 냅니다. 추상 클래스는 향후 튜토리얼에서 심층 다루겠습니다.

java

  1. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  2. Java Try-with-Resources 마스터: 자동 리소스 관리 완전 해설
  3. Java 애너테이션 완전 해설: 종류, 배치 위치, 실전 예제
  4. Java 애너테이션 타입 종합 가이드: 사전정의, 커스텀, 메타 애너테이션
  5. Java String length() 메서드: 문자열 크기 구하기 (예제 포함)
  6. Java String.indexOf() 마스터: 부분문자열 위치 찾기 & 실전 예제
  7. Java String.charAt() 완전 이해: 문법, 반환타입, 예외, 실전 예제
  8. Java String compareTo() 마스터: 문법, 활용 케이스, 실전 예제
  9. Java String.contains() 메서드: 부분문자열 포함 여부 확인 (실전 예제)
  10. Java String.endsWith() 마스터: 문자열 접미사 확인 예제