(三十一)C#编程基础复习——多态
特此声明:本教程内容可能有部分参照其他博主的观点或描述,但始终不影响我学习的热情,代码全部自己手工敲打,编辑此教程目的不是为了博取大家眼球,也不是为利益所驱,只是纯属为了方便自己学习,编辑的过程中也让自己加深了对C#各个基础的印象,同时也让自己编码过程更加流畅顺利,最后还能帮助到有需要的人,代码都是自己亲测有效,如有侵权可以联系本人删除。
多态与封装和继承被视为面向对象编程的三大特性。多态是一个希腊词(Polymorphism),指“多种形态”,在C#中具有两种类型的多态:
- 编译时多态:通过C#中的方法重载和运算符重载来实现编译时多态,也称为静态绑定或早期绑定;
- 运行时多态:通过方法重载实现的运行时多态,也称为动态绑定或后期绑定。
一、编译时多态
在编译期间将函数与对象链接的机制称为早期绑定,也称为静态绑定。C#提供了两种技术来实现编译时多态,分别是函数重载和运算符重载,本节介绍函数重载,运算符重载会在后面进行讲解。
函数重载:在同一个作用域中,可以定义多个同名的函数,但是这些函数彼此之间必须有所差异,比如参数个数不同或参数类型不同等等,返回值类型不同除外。
示例代码:定义名为print的函数来打印不同类型的数据
namespace _018
{
internal class Program
{
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)
{
Program p = new Program();
p.print(123);
p.print("Hello World");
p.print(3.1415926);
Console.ReadKey();
}
}
}
运行结果:
二、运行时多态
C#允许您使用abstract关键字来创建抽象类,抽象类用于实现部分接口。另外,抽象类包含抽象方法,可以在派生类中实现。
下面列举了一些有关抽象类的规则:
- 不能创建一个抽象类的实例;
- 不能在一个抽象类外部声明抽象方法;
- 通过在类定义时使用sealed关键字,可以将类声明为密封类,密封类不能被继承,因此抽象类中不能声明密封类;
示例代码如下:演示什么是抽象类
namespace _019
{
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);
}
}
internal class Program
{
static void Main(string[] args)
{
Rectangle r = new Rectangle(12, 15);
double a = r.area();
Console.WriteLine("长方形的面积为:{0}", a);
Console.ReadKey();
}
}
}
运行结果:
分类:
C#基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了