实现多态有三种方式:虚方法,抽象方法,接口。
虚方法:子类重写父类中的方法,对父类中的方法进行覆盖。适用情况:父类中的方法对子类来说不适用,子类通过重写该方法,覆盖了父类中的方法。
public class Person
{
public virtual void SayHello()
{
Console.WriteLine("Say hello!");
}
}
public class Chinese : Person
{
public override void SayHello()
{
Console.WriteLine("中国人问好!");
}
}
抽象方法:子类重写父类中的方法,父类中不对方法进行实现,在子类中进行实现,父类是抽象类。适用情况:针对同一种类型抽象出来的父类,对某些行为和属性大家都是公有的,但是这些属性和行为实现方式并不一致。
abstract class Person
{
public abstract void SayHello();
}
class Chinese : Person
{
public override void SayHello()
{
Console.WriteLine("中国人问好!");
}
}
接口:实现接口的类,将接口中的方法实现。适用情况:A.当多个类型不能抽象出合理的父类时,但是又要对某些行为进行多态,将公共的方法抽象到一个接口中,让不同的子类调用。
public interface IFlyable//定义一个接口,实用interface 修饰,接口名以I开头,接口中只能包括方法,且方法没有访问修饰符,方法不实现。
{
void Fly();
void Jump();
}
class Student:Person,IFlyable//当一个类继承了父类,并且实现了多个接口的时候,被继承的类必须写在继承列表的第一个位置
{
public void Fly()
{
Console.WriteLine("I can fly");
}
}
网友评论