본문 바로가기

자바

오버라이딩, overriding

반응형

오버라이딩(Overriding) 이란 가장 우선시 되는 이라는 사전적 의미를 가지고 있습니다. 그렇다면 자바에서는 어떤 의미를 가지게 될까요?  조상클래스에서 정의된 메서드를 자식 클래스의 상황에 맞게 입맛에 맞게 수정하는 것입니다. 하지만 메서드 이름, 타입, 매개변수는 그대로 가져가게 됩니다 이는 큰틀에서의 기능은 유지하되 자식에게 필요한 부분들을 적절히 바꾸라는 뜻입니다.

 

마이 썸머 카라는 게임을 아시나요? 부모님이 물려준 차를 다시 조립하고 튜닝해서 레이스에 참여하는 게임인데요. 이와 같이 부모님이 제게 주신 차는 일상적인 사용을 위한 평범한 차입니다. 

 

하지만 나에겐 레이싱 참여라는 가장 중요한 목표가 있기에 그 목적에 맞게 각종 튜닝을 통해 멋진 레이싱용 차량으로 개조 했습니다.

 

 

그럼 자바에서 어떻게 오버라이딩이 활용되는지 살펴 보겠습니다.

 

부모의 changeVariable 매서드 입니다
자식이 오버라이딩한 changeVariable 매서드 입니다

자바에서 이렇게 기존의 매서드가 수정해 재정의 됩니다. 부모와 자식 클래스에 똑같은 이름의 매서드인changeVariable(String name, int number)가 존재합니다. 이름과 나이를 설정한 뒤 부모의 변수가 바뀌었다는 문장을 출력합니다.

 

 

만약 이 매서드를 오버라이딩 없이 자식이 그대로 사용한다면 자식의 이름과 나이를 설정했음에도 불구하고 부모 변수가 바뀌었다는 문장이 그대로 출력되어 버립니다.

 

큰 틀에서의 기능은 같지만 자식클래스는 이 매서드가 자기의 정보가 바뀌었다는 것을 원합니다 왜 자식 변수가 변경되었는데 부모가 변경되었다고 출력되는 것은 자식한테 있어서 안됩니다. 그래서 이 매서드를 오버라이딩해 자식의 이름과 나이를 변경하고 자식의 정보가 변경되었다는 것을 알려주게 수정되었습니다. 

 

정리하자면 오버라이딩은 조상의 매서드를 상속받고 나에게 필요한 기능들을 수정, 추가해 내가 가장 우선시하는 기능들이 추가되게 하는 것입니다. 

반응형

'자바' 카테고리의 다른 글

클래스변수, 인스턴스변수, 지역변수  (0) 2019.10.04
오버로딩과 오버라이딩의 차이  (0) 2019.09.27
오버로딩, 오버라이딩  (0) 2019.09.06
상속, this, super  (0) 2019.09.04
상속  (0) 2019.09.03