私のプログラムには次のクラスがあり、クラス Y に存在するメソッド M2() にアクセスしたいと考えています。クラス Z のオブジェクトを作成し、クラス X の変数でキャストして x を呼び出してアクセスしようとしました。 M2(10,5) しかし、クラス Y の代わりに、クラス X に存在するメソッド M2() を呼び出しています。ありがとう。
public partial class Abstract_Class : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Z z = new Z();
int r1 = z.M2(10, 20); //gives output -20
X x = z;
int r2 = x.M2(10,5); //gives output 10 while I want it to print 15
}
}
public class W
{
public virtual int M2(int x, int y)
{
return x - y;
}
}
public abstract class X : W
{
public abstract void M1();
public override int M2(int x, int y)
{
return 2*(x-y);
}
}
public abstract class Y : X
{
public sealed override int M2(int x, int y)
{
return 3 * (x - y);
}
}
public class Z : X
{
public override void M1()
{
}
}