2014-10-07 3 views
1

У меня проблемы с переопределением метода, унаследованного от родительского класса в Java. Экстракт из моего родительского класса:Java не может переопределить метод, используемый в конструкторе: метод setupAnimationFrames() типа Slime должен переопределить или реализовать метод супертипа

public Character(String spriteLabel, float frameTime, float speed, float x, float y) { 
    // Setup font and nameplate 
    this.setupAnimationFrames(); 
    .... 
    this.currentFrame = downFrames[0]; 
} 

private void setupAnimationFrames() { 
    ...  
} 

В моем классе ребенка, я стараюсь:

public class Slime extends Character { 
    @Override 
    private void setupAnimationFrames() { 
     ...  
    } 

    public Slime() { 
     super("...", 0.15f, 2,727,300); 
    } 
} 

Однако, Eclipse говорит мне:

The method setupAnimationFrames() of type Slime must override or implement a supertype method

Я и свойства проекта/рабочей области установлены на использование Java 1.6, что, по-видимому, является общей причиной этой ошибки.

Почему Java не может переопределить метод?

+0

Потому что private, и вы не можете переопределить частный метод. Вы можете * реализовать * его, но вы не можете * переопределить его. –

ответ

2

Перекрытия для тех, кто например методы, которые являются только видимой детского class.Since, супер класс setupAnimationFrames() метод является частным, не видна, чтобы дочерний класс и, следовательно, переопределение не применяется here.You является реализуя свой собственный метод здесь. Просто удалите @Override аннотация для кода для компиляции.

PS: - Просто для проверки цели, вы можете реализовать setupAnimationFrames() метод с любым типом возвращаемого значения или вы можете бросить любые проверяемые исключения, он будет компилировать (но, конечно, с @Override аннотацией)

private String setupAnimationFrames() { 
     //This compiles in child class,return type is different from parent class 
     ...  
    } 

    private List setupAnimationFrames() throws Throwable { 
     //This compiles in child class ,a checked Throwable has been added to 
    //method signature 
     ...  
    } 
+0

Понял, спасибо! – BnMcG

Смежные вопросы