- 编译时多态性:编译时多态性是通过 C# 中的方法重载和运算符重载(也称为静态或早期绑定)来实现的。
- 运行时多态性:通过方法重载实现运行时多态性。也称为动态绑定或后期绑定。
1. 编译时多态性
在编译期间将函数链接到对象的机制称为早期绑定,也称为静态绑定。 C#提供了两种实现编译时多态性的技术:函数重载和运算符重载。这里主要讨论函数重载,稍后讨论运算符重载。
函数重载
您可以在同一范围内定义多个具有相同名称的函数,但这些函数必须彼此不同,例如具有不同数量的参数或不同类型的参数,但返回类型不同除外。
【范例】定义一个名为 print 的函数,用于打印各种类型的数据。
using System;
namespace it-kiso.com
{
class Demo
{
void print(int i){
Console.WriteLine("int 型のデータを出力します:{0}", i);
}
void print(double d){
Console.WriteLine("double 型のデータを出力します:{0}", d);
}
void print(string s){
Console.WriteLine("string 型のデータを出力します:{0}", s);
}
static void Main(string[] args)
{
Demo p = new Demo();
p.print(123);
p.print("IT基礎");
p.print(3.1415926);
}
}
} 操作的结果将是:
int 型のデータを出力します: 123
string 型のデータを出力します: IT基礎double 型のデータを出力します: 3.1415926
2.运行时多态性
在 C# 中,您可以使用abstract关键字创建用于实现部分接口的抽象类。抽象类还包含派生类可以实现的抽象方法。
以下是有关抽象类的一些规则:
- 您无法创建抽象类的实例。
- 抽象方法不能在抽象类之外声明。
- 在类定义中使用 seal 关键字可以将其声明为密封类,但不能在抽象类中声明密封类,因为密封类不能被继承。
[示例] 下面的程序显示了一个抽象类。
using System;
namespace it-kiso.com
{
abstract class Shape{
public abstract int area();
}
class Rectangle : Shape{
private int width, height;
public Rectangle(int w, int h){
width = w;
height = h;
}
public override int area(){
return (width * height);
}
}
class Demo
{
static void Main(string[] args)
{
Rectangle r = new Rectangle(12,15);
double a = r.area();
Console.WriteLine("長方形の面積は: {0}",a);
Console.ReadKey();
}
}
} 操作的结果将是:
長方形の面積は: 180




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

