CodeGym /Java Blog /무작위의 /Java의 슈퍼 키워드
John Squirrels
레벨 41
San Francisco

Java의 슈퍼 키워드

무작위의 그룹에 게시되었습니다
super 키워드 다양한 상황에서 사용됩니다. 이 게시물을 시작하기 전에 더 나은 이해를 위해 Java의 상속에 대해 알아보는 것이 좋습니다.

Java의 super 키워드는 무엇입니까?

Super 는 슈퍼클래스의 재정의된 메서드를 호출하고 슈퍼클래스의 숨겨진 필드를 참조하는 데 사용할 수 있는 키워드입니다.

super 키워드를 사용하는 이유와 시기는?

Java super 키워드에는 세 가지 명시적 용도가 있습니다.
  1. 자식 클래스에도 같은 이름의 데이터 멤버가 있는 경우 부모 클래스의 데이터 멤버에 액세스합니다 .
  2. 자식 클래스에서 부모 클래스의 기본 생성자 또는 매개 변수가 있는 생성자를 호출합니다 .
  3. 자식 클래스에 재정의된 메서드가 있는 경우 자식 클래스에서 부모 클래스 메서드를 호출합니다 .
예제를 통해 위의 세 가지 사례를 모두 이해해 봅시다.

예 1 - 부모의 데이터 멤버에 액세스

예제 1은 Car 유형 자식 클래스에서 Vehicle 클래스 의 속성 또는 데이터 멤버에 액세스할 수 있는 방법을 보여줍니다 . 잘 이해하려면 아래 스니펫을 실행하세요.

class Vehicle {

	String name = "vehicle";
}

class Car extends Vehicle {

	String name = "car";

	public void printMyName() {

		System.out.println(name);
	}

	public void printParentName() {

		// use super keyword to access 
		// parent's data member / attribute
		System.out.println(super.name);
	}

	public static void main(String[] args) {

		Car myCar = new Car();
		System.out.print("My Car's Name: "); 
		myCar.printMyName();
		
		// printing the parent's name 
		// using the super keyword 
		System.out.print("My Parent Vehicle's Name: "); 
		myCar.printParentName();
	}
}
산출
내 차 이름: car 내 부모 차량 이름: vehicle

예 2 - 자식 클래스에서 부모의 생성자에 액세스

명시적으로 super()를 호출하면 자식 클래스에서 부모 클래스의 기본 생성자나 매개 변수가 있는 생성자 모두에 액세스할 수 있습니다. 다음은 매개변수화된 생성자의 예입니다. 부모 즉 Shape 클래스의 생성자는 특성을 설정하기 위해 자식 즉 Triangle 클래스에서 호출됩니다( super() 사용). 아래 프로그램을 실행하여 출력을 직접 테스트하십시오.

public class Shape {

	String name;

	public Shape(String n) {

		System.out.println("Shape() parameterized constructor called!");
		name = n;
	}
}

class Triangle extends Shape {
	
	int sides = 3;
	String color;

	public Triangle(String n, String c) {
		
		// The super keyword calls the parameterized 
		// constructor of the parent (Shape) with 
		// 'n' as a parameter 
		super(n);
		
		System.out.println("Triangle() parameterized constructor called!");
		this.color = c;
	}

	public static void main(String[] args) {

		Triangle myTriangle = new Triangle("Triangle Alpha", "Yellow");
		
		System.out.println(myTriangle.name);
		System.out.println(myTriangle.color);
	}
}
산출
Shape() 매개변수화된 생성자가 호출되었습니다! Triangle() 매개변수화된 생성자가 호출되었습니다! 트라이앵글 알파 옐로우
빠른 챌린지 : 학습을 테스트하기 위해 기본 생성자를 사용하여 위의 프로그램을 재설계합니다. 또한 super() 가 super(arg) 와 어떻게 다른지 확인하십시오 .

예 3 - 자식 클래스에서 부모의 재정의된 메서드에 액세스

예제 3은 자식 클래스도 정의하는 부모 클래스의 메서드에 액세스하는 방법을 보여줍니다. 아래 프로그램의 부모 클래스 Sound는 voice() 메서드를 정의합니다 . 하위 클래스인 Drum 에도 같은 이름의 메서드가 있습니다. 예를 들어 voice() 입니다 . 메서드 음성이 하위 클래스에 의해 재정의됨을 의미합니다. 자식 클래스에서 부모 클래스의 메서드를 사용하기 위해 super 키워드가 어떻게 필요한지 알아보려면 아래 프로그램을 실행하십시오 .

public class Sound {

	public void voice() {
		System.out.println("Play sound!");
	}
}

class Drum extends Sound {

	public void voice() {
		System.out.println("Play drums!");
	}

	public void play() {

		// The super keyword calls the 
		// voice() method of the parent 
		super.voice();
		voice();
	}
	
	public static void main(String[] args) {

		Drum myDrum = new Drum();
		myDrum.play();
	}
}
산출
Shape() 매개변수화된 생성자가 호출되었습니다! Triangle() 매개변수화된 생성자가 호출되었습니다! 트라이앵글 알파 옐로우

결론

이 게시물이 끝날 때까지 Java에서 super 키워드 의 작업을 이해할 수 있기를 바랍니다 . 실습을 통해 코딩을 배우는 것이 좋습니다. 연습은 논리 구축 학습의 궁극적인 열쇠입니다. 막힐 때마다 이 게시물이 여러분을 환영할 것입니다. 그때까지, 행복한 학습!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION