(一)封装:
属性property:属性是类、结构和接口的命名成员。它们提供了通过访问器accessor读、写或计算私有字段值的灵活机制。
属性是这样的成员:它们提供灵活的机制来读取编写或计算私有字段的值,可以像公共数据成员一样使用属性,但实际上他们是被称为访问器的特殊方法。这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。
属性机制使得私有成员被隐藏,实现了封装的效果,良好的封装可以减少耦合,淡化类与类之间的紧密度依赖关系。
(二)继承:
继承符号: “:”实现继承操作,建立Is-a关系。
virtual:用于修饰方法、属性、索引器、或事件声明,并且允许在派生类中重写这些对象。
override:重写虚方法,将从父类继承的虚方法重写覆盖。
new关键字:在子类中声明一个名称和继承的方法名相同新的方法,如果声明子类的对象是父类的类型,将还会执行继承的父类的方法,override则会执行重写过的方法。
base:可以调用父类的成员方法,除了构造函数和析构函数,派生类将隐式的继承了直接基类的所有成员。也可以显示的调用父类的构造函数来构造子类的成员数据。
(三)多态:
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行效果。多态性通过派生类覆写基类中的虚函数型方法来实现。多态性分为两种,一种是编译时的多态性,一种是运行时的多态性。(1)编译时的多态性:编译时的多态性是通过重载来实现的,对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。(2)运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况实现何种操作。C#中运行时的多态性是通过覆写成员实现
1.声明:abstract class classname在类声明中使用abstract修饰符指示某个类只能是其他类的基类,标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现
(2)抽象方法的特性:
抽象方法是隐式的虚方法,只允许在抽象类中使用抽象方法声明。因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号”{}”。
实现多态性的重载和覆写的比较:
重载的特点(两必须一可以):方法名必须相同,参数列表必须不相同,返回类型可以不相同。
覆写的特点(三相同):相同的方法名称,相同的参数列表,相同的返回值类型。
3.密封类:密封类不能被继承,密封方法重写基类的方法,但其本身不能在任何派生类中进一步重写。密封类只要是为类防止第三方未经授权的扩展自身的类