[Java] 오버라이딩

Hyo Kyun Lee·2022년 1월 31일
0

Java

목록 보기
22/49

1. 오버라이딩

부모가 가지고 있는 메소드와 똑같은 이름, 형태의 메소드를 자식이 가지고 있는 상황에서 자식 클래스의 메소드이 호출되었을때 부모클래스 메소드 호출이 생략되는 과정을 의미한다.

부모가 물려준 기능을 그대로 사용하기 보다는, 자식에서 재정의하여 사용하는 관점에서 이용된다.

2. super() 키워드의 활용

오버라이딩이 될 경우, 자식클래스 인스턴스가 생성된 상황에서 기본적으로 부모 클래스의 메소드는 호출되지 않는다.

public class Car{
	public void run(){
    }
}
public class Truck extends Car{
	public void run(){
    }
}

위 클래스가 선언되었다고 하였을때,

public class TruckTest{
	public void main(String[] args){
    	Truck t = new Truck();
        t.run(); //자식 클래스의 run 메소드 실행
    }
}

Truck 클래스에 대한 인스턴스 생성 후 run메소드를 실행한다면, 자식 클래스의 run 메소드가 실행되며 이러한 경우를 오버라이딩이라 한다.

다만 이때 부모클래스의 메소드는 사라지지 않고, 단지 덮힌 상태일 뿐이다.

public class Truck{
	public void run(){
    	super.run();
        ..
        }
}

위와 같이 super 키워드를 사용하게 된다면, 부모 클래스를 호출하면서 해당 메소드를 그대로 호출할 수는 있다.

3. 오버로딩

오버로딩과 비슷하므로 참조하면서 기억하도록 한다.

오버로딩은 한 클래스 내부에서 이름이 같지만, 인자 개수 및 형태가 다른 메소드를 여러개 선언하는 것을 의미한다.

0개의 댓글