재정의 오버라이딩 Overriding
재정의(Override)
- 상속관계에서 상속받은 하위 클래스가 상위 클래스의 동작을 수정하는 것
- Override (재정의 = 부모 메서드 무시)
- 메모리에 부모와 자식 메서드가 공존하지만 결국에는 자식 메서드가 실행된다
Child 를 두 타입으로 불러 올수있다.
1번
Dog d = new Dog();
d.eat();
2번
Animal d = new Dog();
d.eat();
2번으로 불렀을때가 특히 중요하다.
Upcasting 이라고 한다.
d.eat();
을 했을 때, 원래라면 Parent인 Animal의 eat메서드를 부른다.
하지만 Child인 Dog의 eat이 재정의 되었을 경우에 Dog의 eat을 부른다.
다시 말해서 컴파일 시점에서는 Parent의 eat이다. 하지만 실행을 하면,
동적 바인딩이 일어나서 Child의 재정의한 곳으로 찾아가기 때문에 Child의 메서드가 실행된다.
재정의(Overriding)은 동적 바인딩(호출될 메서드가 실행시점에서 결정되는 바인딩)
프로그램의 속도가 떨어지는 원인이 되지만 이점이 더 많기때문에 사용 한다.
Overloading 은 정적 바인딩이라 실행 속도와는 관계가 없지만 Override는 실행을 한 다음에 실행한 메서드를 찾아가기때문에 속도가 떨어지는 원인이 된다.
Author And Source
이 문제에 관하여(재정의 오버라이딩 Overriding), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kyukim/1-gtd6zxoy저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)