C#教程
C#控制语句
C#函数
C#数组
C#面向对象
C#命名空间和异常
C#文件IO
C#集合
C#多线程
C#其它

C# 多态

C# 多态

术语"多态"是"poly"+"morphs"的组合,意思是多种形式。这是一个希腊词。在面向对象编程中,我们使用三个主要概念: 继承、封装和多态。
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
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4