我希望在多个子类中有一个方法,它可以完成某些事情(比如获取用户信息),但是它的定义、参数与主类不同。这样做是否可行?
我知道这并不是真正的覆盖,但这样做是否可行或者说这不是一种合适的方法来构建方法?
我知道这并不是真正的覆盖,但这样做是否可行或者说这不是一种合适的方法来构建方法?
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"));
}
}
你可以拥有同名但参数数量不同的多个方法版本。这些方法可以全部放在主/父类中,或者只将新版本添加到子类中。对此没有任何限制。
@Override
注解执行以下场景: 1)将参数类型替换为其子类 - 不允许 3)将返回类型替换为其子类 - 允许 - valijon