在C#中,多态性是通过继承和实现接口来实现的,允许编写可以使用基类型的代码,然后使用派生类型的特定行为。
一.实例界面显示
二.源码界面显示
class dad//定义基类
{
protected string name;//定义属性
public dad(string n)//构造函数
{
name = n;
}
public void say()//定义方法
{
MessageBox.Show("I am "+ name );
}
public virtual void growup()//定义虚方法
{
MessageBox.Show(name+ "is a dad,"+ name+" has grown old.");
}
}
class son : dad//定义派生类
{
public son(string n) : base(n)//调用基类的构造函数
{
//name = n;
}
public new void say()//重写基类中的方法
{
MessageBox.Show("I am " + name+ " and a son.");
}
public override void growup()//重写基类中的虚方法
{
//base.growup();
MessageBox.Show(name + " is growing up.");
}
}
private void Test2()//定义方法
{
dad grandpa = new dad("Jerry");//创建基类对象
grandpa.say();//调用基类中的方法
grandpa.growup();//调用基类中的虚方法
dad father = new son("Tom");//创建派生类对象
father.say();//调用派生类中的重写方法
father.growup();//调用派生类中的重写方法
son tom = new son("Jack");//创建派生类对象
tom.say();//调用派生类中的重写方法
tom.growup();//调用派生类中的重写方法
}
private void button5_Click(object sender, EventArgs e)
{
Test2();
}
三.总结
3.1.用父类生成的父类对象,grandpa,访问隐藏方法是父类的方法,访问重写方法是父类的方法;
3.2.用子类生成的父类对象,father,访问隐藏方法是父类的方法,访问重写方法是子类的方法;
3.3.用子类生成的子类对象,son,访问隐藏方法是子类的方法,访问重写方法是子类的方法;