C# 中的多态性2025年8月21日 | 8 分钟阅读 多态(polymorphism)这个词是两个词的组合,“poly”+“morphism”。poly 这个词的意思是多,morphism 的意思是形态。这意味着一个任务可以用多种形式来执行。它是一个希腊词。它提供了一种使用相同函数名实现不同目的的方法。在面向对象编程(OOPs)中,它使用了三个主要概念:继承、封装和多态。它提高了代码的灵活性、可重用性和可维护性。 多态的简单示例让我们举一个说明性的例子来定义 C# 中的多态。 示例编译并运行输出 Sum of num1 and num2 = 75 Concatenated string = overloading 说明 在这个例子中,我们使用了两个整数和字符串数据类型。之后,我们使用了 (+) 运算符。第一个 (+) 运算符用于将两个数字相加,第二个 (+) 运算符用于连接两个字符串操作数。最后,我们使用 Console.WriteLine() 函数来打印输出。 多态性类型C# 中主要有两种类型的多态。 ![]() 在这里,我们将逐一讨论这些多态。 编译时多态在 C# 编程语言中,编译时多态也称为早期绑定和静态多态。它使我们能够定义多个具有相同名称但参数不同的方法。 ![]() 它是通过在 C# 中使用方法重载和运算符重载来实现的。 注意:当一个方法调用在程序编译过程中决定实际的函数时,这被称为编译时多态。a) 函数重载在 C# 中,函数重载是面向对象编程的一个重要概念。它提供了一种让一个类拥有多个同名但参数不同的方法。函数重载可以通过改变参数的数量或改变参数的类型来实现。 使用函数重载的 C# 编译时多态示例 让我们举一个简单的例子来说明在 C# 中使用函数重载的编译时多态。 示例编译并运行输出 The Sum of the two numbers is 300 The Sum of the three numbers is 600 The Sum of two floating numbers is 51.2 说明 在这个例子中,我们定义了一个名为 Number 的类,其中包含三个同名但参数不同的方法。之后,我们在主方法中创建该类 (Number) 的一个实例,并调用该方法 (Addition) 三次。最后,我们使用 Console.WriteLine() 函数来打印输出。 b) 运算符重载在 C# 中,运算符重载允许同一个运算符执行不同的操作。它是一种用户定义的数据类型。可以通过使用诸如 +、-、*、==、<<、>> 等多种运算符来实现。如果我们要使用运算符重载,C# 中至少有一个操作数应该是用户定义的数据类型。 使用运算符重载的 C# 编译时多态示例 让我们举一个例子来说明在 C# 中使用运算符重载的编译时多态。 示例编译并运行输出 6 + 8i 说明 在这个例子中,我们定义了一个名为 Comp 的类,其中包含两个公共整型变量(real 和 imag)和三个方法。我们使用一个构造函数来设置 real 或 imag 的值,然后使用重载的 + 运算符方法来将两个 Comp 对象相加。之后,使用一个 Show() 方法来显示复数。在主方法中,我们创建了两个复数,并使用重载的 + 运算符将它们相加,然后显示结果。 运行时多态在 C# 编程语言中,运行时多态也称为动态多态或后期绑定。当被执行的方法是在程序运行时确定的,就会发生这种情况。它是通过方法重写来实现的,其中派生类提供了对基类中定义的虚方法的自己的实现。 a) 函数重写在 C# 中,函数重写是面向对象编程的一个关键特性,它使得派生类可以重新定义一个已经在其基类中定义的方法。基类方法应使用 virtual 关键字,而派生类应使用 override 关键字来提供它们的实现。它使得子类能够为父类中已经定义的方法提供特定的行为。 使用函数重写的 C# 运行时多态示例 让我们举一个例子来说明在 C# 中使用函数重写的运行时多态。 示例编译并运行输出 The dog barks 说明 在这个例子中,我们定义了一个名为 Animal 的基类,其中包含虚函数 Speak()。之后,我们创建了一个派生类 Dog,它继承自基类并访问基类的特性。在主方法中,我们创建了派生类 (Dog) 的一个实例,并调用 Speak() 方法来打印输出。 b) 虚方法在 C# 编程语言中,虚方法定义在基类内部。virtual 关键字用于创建一个虚方法。它被用作基类成员,以指定该基类成员可以在派生类中被重写。override 关键字应用于派生类,以提供对被声明为虚的基类成员的新实现。 C# 中的虚方法示例 让我们举一个简单的例子来定义在 C# 中使用虚方法的方法重写。 示例编译并运行输出 This is the shape Circle This is the shape square 说明 在这个例子中,我们定义了一个名为 Shape 的类,其中包含虚方法 Draw()。之后,我们创建了一个派生类 Square,它继承自基类并访问基类的特性。在主方法中,我们创建了 Shape 类的一个实例,并调用 Draw() 方法来打印输出。 C# 中多态的用例C# 中多态有几个用例。其中一些如下
编译时多态和运行时多态的区别C# 中的编译时多态和运行时多态有几个区别。一些主要区别如下
结论总之,C# 多态是任何开发者创建软件应用程序的关键因素。它是 C# OOP 的主要支柱之一。它提供了一种使用相同函数名实现不同目的的方法。它有助于提高代码的可重用性、灵活性和可维护性。 C# 多态常见问题解答1) C# 中的多态是什么? 在 C# 中,多态(polymorphism)是两个词的组合,“poly”+“morphism”。poly 这个词的意思是多,morphism 的意思是形态。它意味着一件事物有多种形态。它允许使用相同的函数名实现不同的目的。 2) C# 中有哪些不同类型的多态? C# 中有两种类型的多态。
3) C# 中用于运行时多态的关键字有哪些? virtual、override 和 abstract 关键字用于实现运行时多态。 4) 为什么多态在 C# 中很重要? 多态是任何开发者创建软件应用程序的关键因素。它提供了一种使用相同函数名实现不同目的的方法。它提高了代码的灵活性、可维护性和可重用性。 5) C# 中重载和重写方法的区别是什么? 方法重载和方法重写的区别如下。 方法重载 方法重载是编译时多态的一种形式,允许定义多个同名但签名不同的方法。 方法重写 方法重写是运行时多态的一种形式,允许定义多个具有相同签名的同名函数。它允许子类重写基类的方法。 下一个主题C# Sealed |
我们请求您订阅我们的新闻通讯以获取最新更新。