子类可以覆盖一个方法并具有不同的参数吗?

use*_*754 2 c# java oop

我想在多个子类中有一个方法,它基本上可以完成某件事(例如获取用户信息),但在主类中声明(并且具有与主类不同的参数和定义)。这可能吗?

我知道这并不是真正的压倒一切,但这是否可以完成,或者它不是构建方法的合适方式?

Sha*_*tin 5

您想要做的称为重载方法。这是可行的并且经常发生。在这里玩小提琴。Java 类似。

public class Parent
{        
    public virtual string HelloWorld()
    {
        return "Hello world";
    }

    public string GoodbyeWorld()
    {
        return "Goodbye world";
    }
}

public class Child : Parent
{
     // override: exact same signature, parent method must be virtual
    public override string HelloWorld()
    {
        return "Hello World from Child";
    }

     // overload: same name, different order of parameter types
    public string GoodbyeWorld(string name)
    {
        return GoodbyeWorld() + " from " + name;
    }
}

public class Program
{
    public static void Main()
    {
        var parent = new Parent();
        var child = new Child();
        Console.WriteLine(parent.HelloWorld());
        Console.WriteLine(child.HelloWorld());
        Console.WriteLine(child.GoodbyeWorld());
        Console.WriteLine(child.GoodbyeWorld("Shaun"));
    }
}
Run Code Online (Sandbox Code Playgroud)