在一般的编程中,有没有一种方法可以 "追加到函数中",而不是直接覆盖整个函数?[重复]

问题描述 投票:0回答:2

我目前正在使用C#,我正在使用一个库,在那里你可以 public override void 但这显然覆盖了整个方法。

有没有 "追加方法 "的关键词?比如说

    class A  
    {  
        public virtual void HelloWorld()  
        {  
            Console.WriteLine("Do this first");  
            Console.ReadLine();  
        }  
    }  

    class B : A  
    {  
        public append void HelloWorld() // <-- Special "append" keyword?
        {  
            Console.WriteLine("Then do this!");  
            Console.ReadLine();  
        }  
    }  

因此,输出的 class B : A, HelloWorld() 将是

Do this first
Then do this!
c# inheritance keyword
2个回答
4
投票

你可以通过以下方式调用父类方法 base 关键字

class A
{
    public virtual void HelloWorld()
    {
        Console.WriteLine("Do this first");
    }
}

class B : A
{
    public override void HelloWorld() // <-- Special "append" keyword?
    {
        base.HelloWorld();
        Console.WriteLine("Then do this!");
    }
}

4
投票

你可以在重载的方法中通过 base 关键字。

class B : A
{
    public override void HelloWorld() 
    {
        base.HelloWorld(); // will print "Do this first" and wait for console input
        Console.WriteLine("Then do this!");
        Console.ReadLine();
    }
}

2
投票

没有具体的关键词来表达你的要求,但你可以调用 "我"。基础 的派生类中的实现来实现同样的功能。

class A  
{  
    public virtual void HelloWorld()  
    {  
        Console.WriteLine("Do this first");  
        Console.ReadLine();  
    }  
}  

class B : A  
{  
    public override void HelloWorld()
    {  
        base.HelloWorld();
        Console.WriteLine("Then do this!");  
        Console.ReadLine();  
    }  
}

1
投票

你需要先修改你的代码来调用基础实现。

class B : A  
{  
    public override void HelloWorld()
    {
        base.HelloWorld();
        Console.WriteLine("Then do this!");  
        Console.ReadLine();  
    }  
}

语言没有任何 "追加 "的概念,也没有要求你这样做,也没有提供任何方法来强制执行基实现总是被调用。


0
投票

你可以在base中使用相同的工作,在子方法中使用额外的工作。

class A
{
    public void DoSomething()
    {
        //Do Something
    }
}

class B: A
{
    public void DoSomethingExtra()
    {
        base.DoSomething();
        //Do extra things
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.