2013-09-06 2 views
0

오버라이드 된 메서드에서 super를 호출하는 시점을 이해하는 데 문제가 있습니다. this post에 따르면 바닥에 있어야하지만 내 동료는 동의하지 않습니다.메서드에서 슈퍼를 호출 할 때

이 주제에 대한 의견이 있으십니까?

+1

당신이 보낸 링크에 따르면 첫 번째가 좋을 때와 마지막이 더 좋은 경우입니다. 의견과 관련이 없지만 코드가하는 일을 알고 있어야합니다. –

답변

1

재정의 된 메소드가 수행중인 작업에 따라 다릅니다. 생성자에 대해 이야기하고 있다면, 먼저 상태를 설정하기 전에 수퍼 클래스가 제대로 구성되었는지 super으로 호출해야합니다. 다른 메서드 인 경우 호출을 넣는 위치는 입력 매개 변수 (super이 그 다음이 될 필요가 있는지) 또는 반환 값 (이 전에 super이되는지)에 따라 달라집니다.

링크 된 "게시물"은 자동화 된 코드 감사 도구에 대한 문서이며 권장 사항이 아니며 해당 메서드의 시작 부분이나 끝 부분에서 서브 클래스가 super을 호출해야한다고 알려주는 옵션이 있습니다.

+0

"가능한 한 오류가 남았습니다"는 생성자를 오도하는 수 있습니다. 'super()'항상 생성자의 첫 줄에서 호출해야합니다. – pepuch

+0

@ PatrykRoszczyniała 편집 됨. 얼마나 많은 두통이 변환 된 매개 변수를 슈퍼 생성자에 전달하는지 잊어 버렸습니다. – chrylis

+0

@chrylis 그리 어렵지 않습니다. 생성자 인수 내의 표현식은 허용됩니다. 표현식의 결과가 여러 번 필요할 경우에만 두 개의 생성자가 필요합니다. – Holger

0

내 의견은 규칙이 코딩 표준을 준수해야한다는 것입니다. 당신이 동의 할 수 없다면, 당신의 프로젝트에 이것을 점검 할 필요가 있다는 것이 확실하지 않다.

아주 좋은 이유가없는 한 개인적으로 항상 처음부터 수퍼 전화를했습니다.

3

대답은 에 달려 있습니다. 실제 결정은 재정의 된 메서드에서 수행중인 작업과 특정 메서드를 재정의 할 때 기본 클래스에서 예상하는 동작 인 에 따라 다릅니다.

재정의하는 메서드에 대한 설명은 재정의하는 동안 예상되는 동작의 세부 정보를 제공해야합니다. 제 개인 선호 전화 번호는 super입니다.

관련 문제