gpt4 book ai didi

java - Android/java 将子方法附加到父方法

转载 作者:行者123 更新时间:2023-12-01 11:19:06 25 4
gpt4 key购买 nike

我正在尝试创建一个 Sprite 父类,它使用其中的一些方法通过在移动到子方法之前返回 null 来过滤掉一些无用的条件。我认为这在单个方法中使用时被称为“弹跳器模式”,但找不到任何跨父/子对象扩展的示例。

下面是代码的基本示例;

class parent ()
{
public void update()
{
if (this.count<0)
{
return;
}
// do parent stuff
}
}
class child extends parent ()
{
public void update()
{
super.update()
//do child stuff here
}
}

当我运行子更新方法时,我希望它运行父方法,如果计数小于 0,则停止,不打扰父子内容。

我发现,一旦计数小于 0,父项就会停止,但子项会继续运行。这就像两种更新方法都被视为单独的函数。

我相信我需要一种将子更新方法附加到子更新方法的方法。我希望有一种简单的方法来实现这一点,但只要我不必在每个子类中编写弹跳器/过滤器代码,我就会接受复杂的解决方案。

非常感谢任何帮助。

杰森

#

替代解决方案

建议的代码 类父类 () { 公共(public)无效更新() { if (this.count<0) { 返回; } //做父级的事情 child_update()

    }
child_update()
{
//place hold to be overridden by child
}
}
class child extends parent ()
{
@Override
private void child_update()
{
//do child stuff here
}
}

我认为这解决了我的问题,但还没有机会测试它。当我调用子对象更新方法时,它应该被定向到父方法,该方法执行保镖/验证检查,如果适用,则运行已被子方法覆盖的子更新。子方法将设置为私有(private),因此它如果没有验证检查就无法调用。

我个人认为这是比提议的 boolean 解决方案更干净的解决方案,但想知道其他人的想法。

谢谢

杰森

最佳答案

除非您 child 的 update() 中存在阻止这种情况发生的条件,否则这一切都会按预期进行。通过调用 super.update() 不会替换子级的 update()。它只是像调用任何其他方法一样调用它。这里唯一的区别是你特别想调用你的 child 扩展的 parent 的方法,因此是super.。但是一旦 parentupdate() 返回,调用者的剩余代码就会被执行。

您应该将 update() 更改为,即在执行方法代码时返回 boolean,然后使您 child 的代码如下所示:

@Override
public boolean update() {
if( super.update() ) {
...

return true;
}

return false;
}

另请注意 @Override 的使用(请参阅此处 to find out what it is )

关于java - Android/java 将子方法附加到父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31463115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com