У меня есть небольшой вопрос о наследовании Java. Поэтому скажите, что у меня есть следующие классы.Вызов функции over-riding в родительском классе
class ScreenObject {
public void update(GameContainer gc, StateBasedGame sbg, int delta) {
Input input = gc.getInput();
int mouseX = input.getMouseX();
int mouseY = input.getMouseY();
boolean mouseClick = input.isMouseButtonDown(Input.MOUSE_LEFT_BUTTON);
if (detectMouseClick(mouseX, mouseY, mouseClick)) {
this.performClick(gc,sbg,delta);
}
}
public void performClick(GameContainer gc, StateBasedGame sbg, int delta) {
}
}
class CrewMember extends ScreenObject {
public void update(GameContainer gc, StateBasedGame sbg, int delta) {
super.update(gc, sbg, delta);
}
public void performClick(GameContainer gc, StateBasedGame sbg, int delta) {
System.out.println("hi");
}
}
Теперь, когда crewMember.update()
вызывается с правильными аргументами, не выход, когда должно быть «привет».
Просьба привести несколько контекстов. Вы имеете в виду Foo или Bar? –
Вы на самом деле ** попробовали ** это? В Java все методы являются виртуальными, поэтому 'Bar.g()' фактически называет 'Bar.f()'. –
Спасибо за все ваши ответы. Я пробовал это, но, вероятно, есть ошибка, которую я пропустил. Я попытался найти его, но нашел ссылки на вызов суперфункции, поэтому я понял, что это необычно. Но я думаю, это действительно наоборот. – user2350018