using System;
namespace ConsoleApplication25
{
public class Parent
{
public Parent()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public virtual void M1()
{
Console.WriteLine("in Parent M1...");
}
public virtual void M2()
{
Console.WriteLine("in Parent M2...");
}
public virtual void M3()
{
Console.WriteLine("in Parent M3...");
}
}
public class Child:Parent
{
public Child()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public virtual void M1()
{
Console.WriteLine("in Child M1...");
}
public new void M2()
{
Console.WriteLine("in Child M2...");
}
public override void M3()
{
Console.WriteLine("in Child M3...");
}
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class Class1
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
static void Main()
{
Parent p=new Child();
p.M1();//调用的是Parent类的M1();
p.M2();//调用的是Parent类的M2();
p.M3();//调用的是Child类的M3();
Console.ReadLine();
}
}
}
运行结果:
in Parent M1...
in Parent M2...
in Child M3...
所以想实现多态的特性,需要父类的方法使用virtual关键字,而同时子类的方法使用override关键字!缺一不可!
namespace ConsoleApplication25
{
public class Parent
{
public Parent()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public virtual void M1()
{
Console.WriteLine("in Parent M1...");
}
public virtual void M2()
{
Console.WriteLine("in Parent M2...");
}
public virtual void M3()
{
Console.WriteLine("in Parent M3...");
}
}
public class Child:Parent
{
public Child()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public virtual void M1()
{
Console.WriteLine("in Child M1...");
}
public new void M2()
{
Console.WriteLine("in Child M2...");
}
public override void M3()
{
Console.WriteLine("in Child M3...");
}
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class Class1
{
public Class1()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
static void Main()
{
Parent p=new Child();
p.M1();//调用的是Parent类的M1();
p.M2();//调用的是Parent类的M2();
p.M3();//调用的是Child类的M3();
Console.ReadLine();
}
}
}
运行结果:
in Parent M1...
in Parent M2...
in Child M3...
所以想实现多态的特性,需要父类的方法使用virtual关键字,而同时子类的方法使用override关键字!缺一不可!