前言
面向对象对于程序员来讲是一个很重要的概念,不了解面向对象的理论知识,在学习面向对象的语言时就会产生困惑
1,面向对象含义
- 起源:
- 早期程序设计都是面向过程,而随着时间的发展问题的复杂度也逐渐提升。这样对于使用面向过程的设计变得越来越复杂
- 而面向对象在这一时刻从天而降,带来了全新的解决问题的方案,并逐渐发展为主流
- 对比:
古时候,文章不多的时候,印刷时固定刻板就可以了,而随着文章逐渐增多,每次都重新刻板就很麻烦了,这个时候活字印刷就出来了
面向对象和面向过程的区别类似于此:
面向对象解决问题更加灵活简单,采用封装的技术方法就可以一次编程、多次调用,并且使用属性这样的方式,降低了耦合性,可以更简单的去利用,去理解
2,面向对象的特点
封装:
封装就是将一系列程序逻辑打包成为一个类,仅仅对外展示这个类的属性,使用时无需关注其任何的内部结构,直接使用对外接口即可:
继承:
继承很容易理解,父亲的DNA传给儿子就是一种继承。在面向对象的编程中,被继承的类称为父类或基类,而继承的类称为子类或派生类。继承需要遵循一定的规则:
在OOP(面向对象编程)中,可以使用类名后面加冒号加被继承的类的方法实现继承
继承规则:
- c++ 可以实现多继承,而像c#则只支持单继承,要实现多继承,则需要通过接口来实现
- 静态类不能被继承。因为静态类中只包含静态方法和静态属性,不能被实例化,
多态:
多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。
多态的几种实现方式:
- 虚函数
- 抽象类
- 重载
- 覆盖
- 模板(重载和多态无关)
3,类的特点
面向对象一个重要的概念就是类,对于类的深入理解可以更好的学习了解面向对象的概念(本博客关于类的概念基于C#)
3.1、类的区分
静态类与实例类:
静态类使用修饰符static
来修饰,静态类内的属性方法都为必须为静态成员,创建一个静态类可以理解为创建一个直接实例化的类,但是个别细节与实例化不同
而未使用stati