C# 我们可以为抽象类A调用方法M1吗?
专家们 下面是类B中带有虚方法和重写的抽象类的代码 我们可以调用类A的方法M1吗,因为我们不能实例化它?谢谢C# 我们可以为抽象类A调用方法M1吗?,c#,C#,专家们 下面是类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;
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
code中使用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是一个可以重写的方法,但如果不重写,它将执行基类方法。不,您不能这样做。好的,只是因为我们不能实例化的原因?谢谢公共类C:A{}您不能在B的其他地方也引用base.M1()
?