在某论坛看到如下,第一二点我知道 第三点就不理解了,麻烦各位用简单的代码来解释下第三点是如何实现的!实现了如下多态三大要素,也就实现了多态:
第一:在父类中定义虚拟方法。
第二:在子类中覆盖父类中的虚拟方法。
第三:申明父类实例的变量,则该变量既可以指向父类的实例,也可以指向子类的实例。当变量指向父类实例时,调用的是父类方法;当变量指向子类实例时,调用的是子类同名方法。
第一:在父类中定义虚拟方法。
第二:在子类中覆盖父类中的虚拟方法。
第三:申明父类实例的变量,则该变量既可以指向父类的实例,也可以指向子类的实例。当变量指向父类实例时,调用的是父类方法;当变量指向子类实例时,调用的是子类同名方法。
public class A
{
public virtual void method(){}
}
public class B:A
{
public override void method(){}
}
A a=A();
a.method();//调用父类的方法
A b=B();
b.method();//调用子类的方法
不过在实例化类时应用new关键字A a=A();
----
A a=new A();
{
public virtual void method()
{
Console.WriteLine("A");
}
}
public class B : A
{
public override void method()
{
Console.WriteLine("B");
}
} public class C
{
static void Main(string[] args)
{
A a = new A();
a.method();//调用父类的方法
A b = new B();
b.method();//调用子类的方法
}
} A
B
Press any key to continue . . .