我有一个扩展另一个类的类,我想覆盖和重载一个方法,就像在构造函数中完成一样。
像这样的东西(这只是为了说明我想要的东西):
public class A {
someMethod(int i){
//Do something
}
}
public class B : A {
someMethod(int i, int j) : base(i){
//Do something more
}
}
我怎样才能重现这样的东西?
答案 0 :(得分:0)
您可以在子类中调用继承的方法,这种方法将被称为重载(添加具有相同名称但不同参数的方法):
public class A
{
// note that the method must not be private
// in order to be able to call it from intherited classes
protected void someMethod(int i){
//Do something
}
}
public class B : A {
// however, this class may be private of it needs to be
void someMethod(int i, int j)
{
this.someMethod(i);
// Do something more
}
}
你也可以写base.someMethod(i);
或者根本不写任何说明符,因为它是多余的,但就个人而言,我发现this
比省略说明符更明确。在这种特殊情况下,它并不重要。
但是,如果使用this
覆盖继承类中的方法(或省略说明符),则在使用base
时调用重写的方法将调用实现基类,所以你可能想要注意那个细节。
只是指出差异。 重载就像"交换"或者更具体地说,修改或扩展继承类中的实现,同时保留方法的原始签名(名称和参数):
public class A
{
// again, note that the method must not be private
// in order to be able to call it from intherited classes
protected virtual void someMethod(int i){
//Do something
}
}
public class B : A {
protected override void someMethod(int i)
{
this.someMethod(i);
// Do something more
}
}