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

Java super 키워드 마스터: 고급 용법과 실전 예제

Java super 키워드 마스터: 고급 용법과 실전 예제

super 키워드가 Java 상속에서 어떻게 강력한 기능을 제공하는지 명확한 예제와 전문가 가이드로 알아봅니다.

super 키워드는 Java 상속 모델의 초석으로, 하위 클래스가 직계 슈퍼클래스의 멤버(필드, 메서드, 생성자)를 참조할 수 있게 합니다. 그 뉘앙스를 이해하는 것은 깔끔하고 유지보수하기 쉬운 코드 작성에 필수적입니다.


super의 주요 용도

  1. 오버라이딩된 슈퍼클래스 메서드 호출
  2. 하위 클래스 필드에 가려진 슈퍼클래스 필드 접근
  3. 하위 클래스 생성자에서 슈퍼클래스 생성자 명시적 호출

코드 샘플과 함께 각 시나리오를 살펴보겠습니다.


1. 오버라이딩된 슈퍼클래스 메서드 호출

하위 클래스가 메서드를 오버라이딩하면 super.methodName()으로 슈퍼클래스 버전에 여전히 접근 가능합니다. 이는 원래 기능을 잃지 않고 동작을 확장할 때 중요합니다.

예제: 메서드 오버라이딩과 super

class Animal { public void display() { System.out.println("I am an animal"); } } class Dog extends Animal { @Override public void display() { System.out.println("I am a dog"); } public void printMessage() { display(); // Dog.display() 호출 super.display(); // Animal.display() 호출 } } public class Main { public static void main(String[] args) { Dog dog = new Dog(); dog.printMessage(); } } 

출력:

I am a dog I am an animal 

super.display() 사용으로 슈퍼클래스 구현이 실행되어 기능을 대체하지 않고 확장할 때 유용합니다.


2. 가려진 슈퍼클래스 필드 접근

슈퍼클래스와 하위 클래스가 같은 이름의 필드를 선언하면 하위 클래스 필드가 슈퍼클래스 필드를 가립니다. super.fieldName으로 원래 필드 참조가 가능합니다.

예제: 필드 가림

class Animal { protected String type = "animal"; } class Dog extends Animal { public String type = "mammal"; public void printType() { System.out.println("I am a " + type); // Dog.type System.out.println("I am an " + super.type); // Animal.type } } public class Main { public static void main(String[] args) { Dog dog = new Dog(); dog.printType(); } } 

출력:

I am a mammal I am an animal 

3. super()로 슈퍼클래스 생성자 호출

생성자는 상속되지 않지만, 하위 클래스는 super()로 슈퍼클래스 생성자를 호출할 수 있습니다. 이는 하위 클래스 생성자의 첫 문장이어야 하며, 슈퍼클래스에 기본 생성자가 없거나 인수를 전달해야 할 때 필수입니다.

예제 1: 기본 생성자 호출

class Animal { Animal() { System.out.println("I am an animal"); } } class Dog extends Animal { Dog() { super(); System.out.println("I am a dog"); } } public class Main { public static void main(String[] args) { new Dog(); } } 

출력:

I am an animal I am a dog 

예제 2: 매개변수 있는 생성자 호출

class Animal { Animal(String type) { System.out.println("Type: " + type); } } class Dog extends Animal { Dog() { super("Animal"); System.out.println("I am a dog"); } } public class Main { public static void main(String[] args) { new Dog(); } } 

출력:

Type: Animal I am a dog 

매개변수 있는 경우 컴파일러가 논-디폴트 생성자를 자동 호출할 수 없으므로 super(arguments)가 필수입니다.


super 키워드 마스터로 견고한 상속 계층을 작성하고, 오버라이딩된 로직에 접근 가능하게 하며, 생성자가 적절히 초기화되게 하세요. 이 기법들은 확장 가능한 Java 애플리케이션에 필수적이며 업계 전문가들이 권장하는 모범 사례와 일치합니다.

java

  1. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  2. Java 주석: 종류, 사용법, 모범 사례
  3. Java 향상된 for 루프(for-each) 완벽 가이드: 문법, 예제, 비교
  4. Java String 마스터하기: 생성, 메서드, 모범 사례
  5. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  6. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  7. Java Try-with-Resources 마스터: 자동 리소스 관리 완전 해설
  8. Java 애너테이션 완전 해설: 종류, 배치 위치, 실전 예제
  9. Java Assertion(어설션) 실전 가이드: 버그 조기 발견과 코드 신뢰성 확보
  10. Java Vector 완벽 가이드: 사용법, 특징, ArrayList와의 비교