多态和和继承
大家好,请问一下~~~~~~代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication10
{
class MyClass1
{
private int x = 0;
private int y = 0;
public int X
{
set { x = value; }
get { return x; }
}
public int Y
{
set { y = value; }
get { return y; }
}
public virtual int add()
{
return X + Y;
}
}
class MyClass2:MyClass1
{
public override int add()
{
int x = 5;
int y = 7;
return x + y;
}
}
class Program
{
static void Main(string[] args)
{
MyClass2 myclass2 = new MyClass2();
MyClass1 myclass1 = (MyClass1)myclass2; //<1>使用派生类MyClass2的对象实例化基类MyClass1的对象
MyClass1 myclass1 = new MyClass1(); //<2>使用MyClass1实例化
myclass1.X = 3;
myclass1.Y = 5;
Console.WriteLine(myclass2.add());
Console.WriteLine(myclass1.add());
Console.ReadLine();
}
}
}
结果(<1>和<2>分别有两种情况):
<1>——12 , 12
<2>——12 , 8
问题:
为什么会有两种不同的结果呢????????请帮帮忙,谢谢~~~~~~~~~~~~
可以详细解释一下第一种情况吗???这种用基类来实例化比较少见~~~~~~~~