부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하여 사용하는 것이다.
오버라이딩의 조건 및 방법
자식 클래스에서 부모 클래스의 메소드를 재정의 하기 위해서는 조건(시그니쳐 통일)을 지켜야 한다. 부모 메소드의 이름, 리턴 타입, 매개변수의 갯수, 자료형과 순서를 동일하게 하여 자식 클래스에서 작성해야 한다. 접근 제어자는 주로 부모클래스와 동일하게 사용하지만 접근 범위를 넓게 지정할 수는 있다.(예 : default → public)
package Excercise;
public class HankookTire implements Tire{
@Override
public void roll() {
System.out.println("한국 타이어가 굴러갑니다.");
}
}
-----------------------------------------------------------------------------------------
package Excercise;
public class KumhoTire implements Tire{
@Override
public void roll() {
System.out.println("금호 타이어가 굴러갑니다.");
}
}
package Excercise;
public class KumhoTire implements Tire{
@Override
public void roll() {
System.out.println("금호 타이어가 굴러갑니다.");
}
}
package Excercise;
public interface Tire {
public void roll();
}
package Excercise;
public class Car {
Tire frontLeftTire = new HankookTire();
Tire frontRightTire = new HankookTire();
Tire backLeftTire = new HankookTire();
Tire backRightTire = new HankookTire();
void run() {
frontLeftTire.roll();
frontRightTire.roll();
backLeftTire.roll();
backRightTire.roll();
}
}
package Excercise;
public class CarExample {
public static void main(String[] args) {
Car myCar = new Car();
myCar.run();
myCar.frontLeftTire = new KumhoTire();
myCar.frontRightTire = new KumhoTire();
myCar.run();
}
}
오버라이딩이란 상속받은 메소드를 자식 클래스에서 재정의하여 사용하는 것이다.
자식 클래스에서 부모의 메소드를 수정해야 할 때 사용된다. 일반 클래스의 상속 관계에서는
많이 사용되지는 않고 추상 클래스나 인터페이스에서 필수적으로 사용되는 개념이다.
자식 클래스에서 부모 클래스의 메소드와 동일한 시그니쳐(메소드 이름, 리턴 타입, 매개변수의 개수/ 자료형/순서)를 적용하여야 한다.
오버라이딩 결과 부모 메소드는 은닉되고 자식 클래스에서 재정의된 메소드만 기본적으로 호출된다. 필요시 super. 으로 부모 메소드를 호출할 수 있다.
[출처][JAVA/자바] 메소드 오버라이딩(overriding)|작성자 JOKER