我们可以为抽象类A调用方法M1吗
本文关键字:调用 方法 M1 抽象类 我们 | 更新日期: 2023-09-27 18:03:41
专家
下面是B类中具有虚拟方法和覆盖的抽象类的代码。
我们可以调用类A的方法M1吗,因为我们不能实例化它?谢谢,
public abstract class A
{
public virtual int M1(int a, int b)
{
return a + b;
}
}
public class B : A
{
public override int M1(int a, int b)
{
return a - b;
}
}
一旦B
覆盖M1
,虚拟方法分派将使B.M1()
被调用,即使您将B
的实例强制转换为A
也是如此。
您唯一可以调用它的地方是来自B
代码,使用base.M1()
语法:
public override int M1(int a, int b)
{
var temp = base.M1(a, b);
return temp - a - b;
}
但是,可以有另一个继承自A
的类(将其命名为C
(,它不会覆盖M1
。在这种情况下,在C
的实例上调用M1
将调用A.M1()
。
必须实例化一个实现A1的类,virtual是一个可以重写的方法,但如果不重写,它将执行基类方法。