个性化阅读
专注于IT技术分析

C#多态性

术语“多态”是“ poly” +“ morphs”的组合,表示多种形式。这是一个希腊词。在面向对象的编程中,我们使用3个主要概念:继承,封装和多态性。

C#中的多态有两种类型:编译时多态和运行时多态。通过C#中的方法重载和运算符重载来实现编译时多态。也称为静态绑定或早期绑定。通过方法重载实现的运行时多态也称为动态绑定或后期绑定。

C#运行时多态示例

让我们看一下C#中运行时多态的简单示例。

using System;
public class Animal{
    public virtual void eat(){
        Console.WriteLine("eating...");
    }
}
public class Dog: Animal
{
    public override void eat()
    {
        Console.WriteLine("eating bread...");
    }
    
}
public class TestPolymorphism
{
    public static void Main()
    {
        Animal a= new Dog();
        a.eat();
    }
}

输出:

eating bread...

C#运行时多态示例2

让我们看看C#中运行时多态的另一个示例,其中有两个派生类。

using System;
public class Shape{
    public virtual void draw(){
        Console.WriteLine("drawing...");
    }
}
public class Rectangle: Shape
{
    public override void draw()
    {
        Console.WriteLine("drawing rectangle...");
    }
    
}
public class Circle : Shape
{
    public override void draw()
    {
        Console.WriteLine("drawing circle...");
    }

}
public class TestPolymorphism
{
    public static void Main()
    {
        Shape s;
        s = new Shape();
        s.draw();
        s = new Rectangle();
        s.draw();
        s = new Circle();
        s.draw();

    }
}

输出:

drawing...
drawing rectangle...
drawing circle...

数据成员的运行时多态

C#中的数据成员无法实现运行时多态。让我们看一个示例,其中我们通过引用变量访问字段,该引用变量引用派生类的实例。

using System;
public class Animal{
    public string color = "white";

}
public class Dog: Animal
{
    public string color = "black";
}
public class TestSealed
{
    public static void Main()
    {
        Animal d = new Dog();
        Console.WriteLine(d.color);
  
    }
}

输出:

white
赞(0)
未经允许不得转载:srcmini » C#多态性

评论 抢沙发

评论前必须登录!