오버라이딩 정의
부모 클래스가 가지고 있는 메소드와 똑같은 모양의 메소드를 자식이 가지고 있는 것이다.
즉 오버라이딩이란 메소드를 재정의하는 것이다.
자식클래스가 부모클래스의 메소드 사용
Car 클래스를 상속받은 Bus 클래스는 부모클래스가 가지고 있는 run() 메소드를 사용할 수 있다.
// run 메소드를 가지고 있는 Car 클래스
public class Car{
public void run(){
System.out.println("Car의 run 메소드");
}
}
// Car를 상속받는 Bus 클래스
public class Bus extends Car{
}
public class BusExam{
public static void main(String args[]){
Bus bus = new Bus();
bus.run(); // Car의 run메소드가 실행된다.
}
}
자식 클래스에 부모가 가지고 있는 메소드 재정의: 오버라이딩
public class Bus extends Car{
@overriding
public void run(){
System.out.println("Bus의 run 메소드");
}
}
public class BusExam{
public static void main(String[] args){
Bus bus = new Bus();
bus.run(); // Bus의 run메소드가 실행된다.
}
}
메소드를 오버라이딩하면, 항상 자식클래스에서 정의된 메소드가 호출된다.
오버라이딩과 동시에 부모의 메소드도 같이 호출하는 방법
public class Bus extends Car{
public void run(){
super.run(); // 부모의 run() 메소드 호출
System.out.println("Bus의 run 메소드");
}
}