You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua中如何在子类B的foo()里按条件调用父类A的同名方法?

如何在子类中部分重写父类方法(无需访问父类代码)

这问题太常见了,好在几乎所有主流的面向对象编程语言都提供了专门的语法,让你不用接触父类代码就能实现这种“条件式重写”的需求——核心就是在需要复用父类逻辑的分支里,直接调用父类的同名方法。

给你举几个常用语言的具体实现例子:

Java 实现示例

class B extends A {
    @Override
    public void foo() {
        if (/* 这里写你的特定条件,比如 someFlag == true */) {
            // 执行你的自定义逻辑
            System.out.println("触发B的自定义foo逻辑");
        } else {
            // 直接调用父类A的原有foo方法
            super.foo();
        }
    }
}

Python 实现示例

class B(A):
    def foo(self):
        if 特定条件:  # 比如 self.status == "special"
            # 自定义逻辑部分
            print("执行B的自定义foo逻辑")
        else:
            # 调用父类的原方法
            super().foo()

C# 实现示例

public class B : A {
    public override void Foo() {
        if (/* 你的条件判断 */) {
            // 自定义逻辑
            Console.WriteLine("执行B的自定义Foo逻辑");
        } else {
            // 调用父类的原方法
            base.Foo();
        }
    }
}

关键说明

  • 这些super(Java/Python)、base(C#)都是语言内置的关键字,专门用来在子类中访问父类的成员(包括方法)。
  • 不管父类代码是编译好的库还是你看不到的源码,只要你的子类合法继承了父类,就能通过这些关键字直接调用父类的原有方法,完全不需要复制父类的实现逻辑。
  • 这种写法也符合面向对象的“开闭原则”——不用修改父类代码,只扩展子类的功能。

内容的提问来源于stack exchange,提问作者Bing Gan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:26:03