面向对象的特点封装、继承、多态
一。封装
封装是将数据和方法集成到一个单元中我们称作类。封装的概念比较好理解,那么封装的用途呢?一般来说封装可以防止代码被我们
无意中破坏,通过属性和访问权限来控制。
封装的特点:
1.隐藏系统实现的细节,保证系统的安全性和可靠性。
2.提供稳定不变的对外接口。
3.封装保证了代码的模块化,提高了软件的复用性和功能的分离。
二。继承
感念就不多说了。继承主要是为了提高代码的复用性。
1.一般类继承。一个子类只能继承一个父类。
2.抽象类继承。一个子类只能继承一个抽象类,而且必须实现抽象类中的所有抽象方法。
3.接口继承。一个子类可以继承多个接口,而且必须实现接口的所有内容。
继承需注意:
- 密封类不可以被继承。
- 继承关系中,更多关注的是共性而不是特性,共性是层次复用的基础,特性是扩展的基础。
- 继承的层次必须有所控制,否则维护会比较复杂。
- 面向对象的原则:多组合,少继承,低耦合,高内聚。
继承需要注意的地方:
对象在实例化的时候会首先初始化父类的字段和方法然后再初始化子类的字段和方法而且这个过程是按字段的顺序来分配内存空间的,
不同的地方在于在初始化子类字段的时候会将和父类同名的字段加以区别,而初始化子类方法的时候会将同名方法进行重写。下面举个例子
来说明一下。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class dog { public string type = "dog"; public virtual void GetType() { Console.Write("I am a {0}", type); } } public class bird : dog { public string type = "bird"; public override void GetType() { Console.Write("I am a {0}", type); } } dog d = new bird(); d.GetType(); Console.Write("i am a {0}", d.type);
上诉代码大家可以自行验证一下输出结果。
三。多态
一般来说多态是通过接口和抽象类来实现的,多个子类对接口、抽象类方法的不同实现,使得在使用接口和抽象类时有了不同的实现方式。
多态比较好理解。这里就不做多余说明了。
请多多指教