一. 封装
C#中可使用类来达到数据封装的效果,这样可以使数据与方法封装成单一元素,以便于通过方法存取数据。除此之外,还可以控制数据的存取方式。
在面向对象编程中,大多数都是以类作为数据封装的基本单位。类将数据和操作数据的方法结合成一个单位。设计类时,不希望直接存取类中的数据,而是希望通过方法来存取数据。这样就可以达到封装数据的目的,方便以后的维护升级,也可以在操作数据时多一层判断。
此外,封装还可以解决数据存取的权限问题,可以使用封装将数据隐藏起来,形成一个封闭的空间,然后可以设置哪些数据只能在这个空间中使用,哪些数据可以在空间外部使用。一个类中包含敏感数据,有些人可以访问,有些人不能访问,如果不对这些数据的访问加以限制,后果将会非常严重。所以要对类的成员使用不同的访问修饰符,从而定义他们的访问级别。
二. 继承
继承是面向对象最重要的特性之一。任何类都可以从另外一个类继承,这就是说,这个类拥有它继承类的所有成员。在面向对象编程中,被继承的类称为父类或基类。C#中提供了类的继承机制,但只支持单继承,而不支持多继承,即在C#一次只允许继承一个类,不能同时继承多个类。
三. 多态
多态性意味着有多重形式。
在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。
多态性可以是静态的或动态的。
在静态多态性中,函数的响应是在编译时发生的。
在动态多态性中,函数的响应是在运行时发生的。
1.静态多态性
在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。C# 提供了两种技术来实现静态多态性。
分别为:
1.1方法重载:
可以在同一个范围内对相同的方法名有多个定义。
方法的定义必须彼此不同,可以是参数列表中的参数类型不 同,也可以是参数个数不同。
不能重载只有返回类型不同的方法声明。
2.动态多态性
当有一个定义在类中的函数需要在继承类中实现时,可以使用虚方法。
2.1:虚方法是使用关键字 virtual 声明的。
2.2:虚方法可以在不同的继承类中有不同的实现。
2.3:对虚方法的调用是在运行时发生的。
2.4:动态多态性是通过抽象类和虚方法实现的。
定义虚方法:
访问修饰符 virtual 返回的数据类型/void 方法名()
{
//执行代码,也可以完全不写
}
重写父类的方法(子类中):
访问修饰符 override 返回的数据类型/void 方法名()
{
//执行代码
}