2012-02-19 2 views
2

나는 다음과 같은 방법 오버라이드 (override) 할 경우재정의 방법

public Machine makeDramaticMachine(String machineName, int machineSize) 
{ 
    return new DramaticMachine(machineName, machineSize); 
} 

이 올바른 다음과 같습니다와

public Machine makeMachine(String machineName, int machineSize) 
{ 
    return new Machine(machineName, machineSize); 
} 

를?

+0

이렇게 서명은 다음과 같이 유지됩니다. public machine makeMachine (String machineName, int machineSize) – AkshaiShah

답변

6

"서명"방식을 변경 한 이후로는 그렇지 않습니다. 이 메소드가 true의 재정의 (override)가되기 (위해) 때문에, 메소드 명과 파라미터리스트는 변경되지 말아주세요. 재정의가 true 재정의인지 테스트하려면 항상 @Override 주석을 사용하십시오. 재정에 해당하는 경우 또는 당신은 당신의 코드를 실행하지 전에 예 :은 :

@Override // always use this annotation just to be sure 
public Foo myMethod(Bar baz) { 
    // ... code in here 
} 

는 주석을 사용하면 확인하도록 컴파일러에 강제로.

2

이름을 변경하여 재정의 할 수 없습니다.

5

정의가 없습니다. 메서드 재정의는 하위 클래스에서 동일한 서명을 사용하여 메서드를 구현하는 것을 의미합니다. 메소드의 이름이 다르므로 첫 번째 메소드를 대체 할 수 없습니다.