我怎样才能覆盖方法?
How can I override methods?
我正在尝试覆盖 init()
、render()
和 release()
方法,但无法使其正常工作。我查看了有关覆盖的教程并检查了以下内容:
- 方法的覆盖发生在原始方法的子类中
- 方法名称完全相同
- 参数相同(本例为none)
我有2个类:
public class Game {
public void run() {
System.out.println("Running!");
init();
render();
release();
}
public void init() {}
public void render() {}
public void release() {}
}
和
public class Loader extends Game {
@Override
public void init() {
System.out.println("Initializing");
}
@Override
public void render() {
System.out.println("Rendering");
}
@Override
public void release() {
System.out.println("Releasing.");
}
}
为什么只有 "Running!" 打印到控制台?
您必须使用 运行() 方法覆盖 class Loader 对象而不是 Game 对象以获得所需的结果。
您必须通过在带有@Override 注释的子类中创建一个方法来覆盖Game#运行 函数。
public class Loader extends Game {
@Override
public void run() {
System.out.println("Running from Loader!");
}
}
当您定义 Game 对象时,您必须实例化一个新的 Loader 对象。
Game game = new Loader();
game.run(); // this object is an instance of Loader so Loader#run() is called.
我正在尝试覆盖 init()
、render()
和 release()
方法,但无法使其正常工作。我查看了有关覆盖的教程并检查了以下内容:
- 方法的覆盖发生在原始方法的子类中
- 方法名称完全相同
- 参数相同(本例为none)
我有2个类:
public class Game {
public void run() {
System.out.println("Running!");
init();
render();
release();
}
public void init() {}
public void render() {}
public void release() {}
}
和
public class Loader extends Game {
@Override
public void init() {
System.out.println("Initializing");
}
@Override
public void render() {
System.out.println("Rendering");
}
@Override
public void release() {
System.out.println("Releasing.");
}
}
为什么只有 "Running!" 打印到控制台?
您必须使用 运行() 方法覆盖 class Loader 对象而不是 Game 对象以获得所需的结果。
您必须通过在带有@Override 注释的子类中创建一个方法来覆盖Game#运行 函数。
public class Loader extends Game {
@Override
public void run() {
System.out.println("Running from Loader!");
}
}
当您定义 Game 对象时,您必须实例化一个新的 Loader 对象。
Game game = new Loader();
game.run(); // this object is an instance of Loader so Loader#run() is called.