2012-02-19 3 views
2

Если я хочу, чтобы переопределить следующий метод:переопределить метод

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

С:

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

Будет ли это правильно?

+0

так что подпись будет выглядеть следующим образом: public Machine makeMachine (String machineName, int machineSize) – AkshaiShah

ответ

6

Нет, это не так, поскольку вы изменили метод «подпись». имя метода и его список параметров должны быть неизменными, чтобы это было истинным переопределением. Всегда используйте аннотацию @Override, чтобы проверить, являются ли ваши переопределения истинными переопределениями. например .:

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

С помощью аннотаций, вы заставите компилятор, чтобы проверить, если переопределить это правда или нет, прежде чем запустить свой код.

2

Вы не можете переопределить, изменив имя.

5

По определению. Метод переопределения означает метод реализации с той же сигнатурой в подклассе. Ваш метод имеет другое имя, поэтому он не может переопределить первый метод.