c# - 从父类调用子类方法

标签 c# oop inheritance polymorphism overriding

a.doStuff() 方法是否可以在不编辑 A 类的情况下打印“B did stuff”?如果是这样,我该怎么做?

class Program
{
    static void Main(string[] args)
    {
        A a = new A();
        B b = new B();

        a.doStuff();
        b.doStuff();

        Console.ReadLine();
    }
}

class A
{
    public void doStuff()
    {
        Console.WriteLine("A did stuff");
    }
}

class B : A
{
    public void doStuff()
    {
        Console.WriteLine("B did stuff");
    }
}

我正在修改一款 Steam 游戏,泰拉瑞亚。而且我不想反编译并重新编译它,因为那样会很麻烦。我的程序通过 XNA“注入(inject)”到泰拉瑞亚。我可以使用 XNA 的 update() 和 draw() 方法来修改一些东西。但它非常有限。我不想覆盖基本方法来修改更多东西(例如 worldgen)。

最佳答案

是的,如果您在 A 中将 doStuff 声明为 virtual,然后在 B.

class A
{
    public virtual void doStuff()
    {
        Console.WriteLine("A did stuff");
    }
}

class B : A
{
    public override void doStuff()
    {
        Console.WriteLine("B did stuff");
    }
}

关于c# - 从父类调用子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9067885/

相关文章:

c# - MediatR 发布和 MediatR 发送

c# - 在 C# 中解密用 PHP openssl_encrypt 加密的字符串

c# - 使用 Parallel.for 循环的文件 I/O 问题

java - Java中是否有任何注释警告子类不应隐藏静态方法

python - 使用superclass .__ init()__而不是superclass()调用父类(super class)构造函数的原因

java - 在 Java 中编写继承的 equals() 方法

c# - 使用 FileShare.Delete 打开已删除文件的行为是否在 Windows 上发生了变化?

java - 将其传递给构造函数

oop - 如何在 Bool 或 Iff 中实现 Exp in the Paper Extensibility for the Mass

PHP 数据库类加载行函数 (OOP)