메소드 override 는 상속하는 부모 클래스의 메소드와 동일한 메소드명, 동일한 매개변수 타입과 갯수, 동일한 반환형을 가지고 자식 클래스에서 재정의하는 것입니다. 이 때, 부모의 접근 제어 지시자를 더 좁혀서는 안됩니다. 동일하거나, 더 넓히는 것은 허용됩니다.


메소드가 자식 클래스에서 오버라이딩되면, 외부에서 부모 클래스의 변수로, 자식 객체를 생성하여 이를 가리키게 한 다음, 부모 클래스 내의 오버라이딩된 메소드를 호출하더라도, 부모의 메소드가 아닌, 자식의 오버라이딩된 메소드가 호출됩니다.


반환형이 동일하지 않은 경우에, 부모 클래스의 메소드의 반환형이 더 상위 클래스이고, 자식 클래스의 메소드의 반환형이 그 상위 클래스를 상속하는 자식 클래스인 경우에는 메소드 override 가 가능합니다. 즉, 부모 클래스의 메소드의 반환형이 자식 클래스의 메소드의 반환형보다 더 상위 클래스이어야 한다는 것입니다. 이는, 자식 클래스의 인스턴스를 부모 클래스의 인스턴스에 대입할 수 있는 것과 같은 이치라고 볼 수 있습니다.

by kkikkodev 2015. 6. 16. 10:31