2013-02-03 1 views
2

부모 클래스 메서드를 재정의 할 때 바보 같은 혼란이 생기면이 파생 된 재정의 된 메서드는 여전히 부모 클래스 메서드의 코드를 유지합니까? 아니면 정의 할 수있는 새로운 새로운 메서드입니까?Java 오버라이드 작업 방법

+0

약간의 추론을 통해 답을 얻을 수 있습니다. 당신의 메소드가 오버라이드 된 부모 클래스 메소드의 코드도 포함한다면, super.foo()가 필요 없다. 양자 택일로, 만약 당신이 개발자라면, 오버라이드 된 메소드 super가 호출되는지 아닌지에 대한 선택권을 갖지 않을 것이기 때문에 혼란이있을 것이다. 그러나 아니요, 귀하의 메소드는 작성한 코드를 제외한 모든 코드를 "보유"하지 않습니다. – Simon

답변

6

실행됩니다. http://docs.oracle.com/javase/tutorial/java/IandI/override.html

일반적으로 우리는 수퍼 클래스의 메서드를 확장하거나 전체 논리를 변경하려고 할 때 수행합니다.

예 : 수퍼 클래스에는 버블 정렬을 사용하는 정렬 방법이 있습니다.

파생 클래스에서 동일한 방법을 원하지만 빠른 정렬을 구현하려고합니다. 그런 다음 우리는 무시합니다.

먼저 다음 하위 클래스 오버라이드 (override) 메소드 로직은 우리가 super.methodname()을 사용하는 슈퍼 클래스 메소드를 실행하려면 둘째

.

질문의 마지막 지점 super.method()과 같은 수퍼 클래스 메서드가 아닌 메서드를 재정의하면 해당 메서드가 잘못되었음을 의미하지 않습니다. 그 의미는 이미 정렬 예제를 설명합니다.

1

어떻게 될까요? 정확하게 주석에 쓰여진 내용입니다.

당신이 방법을 무시하고 대신에 방법에 대한 부모의 코드를 실행, 그것은 분명한 개념을 얻기 위해이 문서를 읽고 현재 클래스의 코드

+0

... 명시 적으로'super.method()'를 호출하지 않으면. – Dan

관련 문제