C#与.NET高级编程——C#的多态介绍
多态概念
多态是面向对象程序设计中的一个重要概念,指的是在一个类的不同实例对象上,相同的方法会产生不同的结果。C#实现多态机制的方式主要有两种:继承和接口。
多态的实现方式
继承多态
继承是C#中实现多态的一种方式。子类继承了父类的方法和属性,并且可以覆盖父类的方法。在调用子类的方法时,可以用父类的对象来调用,此时就发生了多态。
示例代码:
class Animal
{
public virtual void Say()
{
Console.WriteLine("I'm an animal");
}
}
class Dog : Animal
{
public override void Say()
{
Console.WriteLine("I'm a dog");
}
}
class Cat : Animal
{
public override void Say()
{
Console.WriteLine("I'm a cat");
}
}
//调用Say方法
Animal animal = new Animal();
animal.Say(); //输出:I'm an animal
Dog dog = new Dog();
dog.Say(); //输出:I'm a dog
Cat cat = new Cat();
cat.Say(); //输出:I'm a cat
Animal animal1 = new Dog();
animal1.Say(); //输出:I'm a dog
Animal animal2 = new Cat();
animal2.Say(); //输出:I'm a cat
上述代码中,Animal是一个父类,有一个virtual类型的Say()方法。Dog和Cat是Animal的子类,并且通过override关键字覆盖了Say()方法。在调用Say()方法时,如果用父类Animal创建的对象调用,输出"I'm an animal";但如果用子类Dog或Cat创建的对象调用,就会输出本身的字符串,这里就发生了多态。
接口多态
接口多态是C#中另一种实现多态的方式。不同的类实现了一个接口,并重载了其中的方法,此时,在调用这些类实现的方法时,可以用接口来调用。
示例代码:
public interface IPlay
{
void Play();
}
class Basketball : IPlay
{
public void Play()
{
Console.WriteLine("Play Basketball");
}
}
class Football : IPlay
{
public void Play()
{
Console.WriteLine("Play Football");
}
}
//调用Play方法
IPlay play1 = new Basketball();
play1.Play(); //输出:Play Basketball
IPlay play2 = new Football();
play2.Play(); //输出:Play Football
上述代码中,IPlay是一个接口,其定义了一个Play()方法。Basketball和Football是实现了IPlay接口的类,并且它们分别实现了Play()方法。在调用Play()方法时,用IPlay接口来调用,就可以实现多态的效果。
总结
C#的多态机制可以通过继承和接口来实现,继承是C#中经典的实现多态的方式,而接口多态则更加灵活。在实际工作中,多态的应用能够增强程序的可扩展性和可重用性。
以上是“C#与.NET高级编程——C#的多态介绍”的完整攻略,希望对您的学习和工作有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#与.net高级编程 C#的多态介绍 - Python技术站