2013-06-07 3 views
-4

알고 있습니다. PHP에서와 달리 지원되지 않습니다. 내 시스템을 초안하겠습니다.정적 메소드를 오버라이드 된 메소드로 사용하는 자바

일반적인 "BaseItem"클래스가있는 객체 (Cloud, Star, Bird)가있는 2D 스크롤링 게임입니다. 더 많은 생명을 얻거나, 생명을 잃는 등의 다른 일이 일어날 수 있습니다. 추상 메소드 인 BaseItem.eventOnCollation()은 변경된 사항을 설명하는 배열 만 반환합니다 (생명을 얻었거나, 생명을 잃었으며, 보너스를 받았습니다. 기타).

지금까지는 그렇게 좋았지 만 "CloudB"와 같은 효과가있는 또 다른 "CloudB"가 있습니다. 정확히 eventOnCollation() 메소드를 복사 하시겠습니까? 코드 반복. "Cloud"를 초기화하고 해당 eventOnLocation()을 호출 하시겠습니까? 더 나은,하지만 instatize로드 더 불필요한 것들. 나는 단지 효과가 부 단위에 무엇인지를 알고 싶다.

내가 말했듯이 그게 그 정적 효과를 알 수 있습니다. 그 효과를 알기 위해 객체의 인스턴스를 가질 필요조차 없습니다. 동일한 효과를 가진 100 개의 별이있을 수 있습니다. 개체가 Vector에 있습니다. 그리고 이것은 모든 객체를 반복 할 때 eventOnCollation() 예외를 호출 할 때입니다!

나는 당신이 CloudB 클라우드를 확장하고 eventOnLocation() 제외한 모든 메소드를 오버라이드 (override) 할 수있는 모든 명확

+0

"* 모든 것이 분명하기를 바란다." "=> 사실 ...이 유형의 것은 단어가 아닌 실제 코드로 가장 잘 설명됩니다. – assylias

+0

정적 메소드는 오버라이드와 관련이 있지만 다른 용도로 사용됩니다. – NINCOMPOOP

+0

어떤 예외가 발생하고 있습니까? – LuigiEdlCarno

답변

1

이었다 바랍니다. 아니요 static 여기에 있습니다.

+0

예. 그러나 생성자 인 Cloud도 호출되어 건너 뜁니다. super.super와 같은 것 :) – user1929946

2

언급 한 동작에 정적 메서드를 사용하면 안됩니다.

그런 다음
public class CloudB extends Cloud { ... } 

당신은 코드가없는 비슷한 클래스의 다른 행동을 가지고 ... 등 오버라이드 (override) 방법, 추상 메소드처럼 모든 좋은 것들을 사용할 수 있습니다 당신이 아마하고 싶은 것은, CloudBCloud을 확장하는 것입니다 복사.

+0

음침한. 그러나 생성자 인 Cloud도 호출되어 건너 뜁니다. super.super와 같은 것 :) – user1929946

관련 문제