C#面向对象概述
早期的程序实际上就是一连串对计算机下达的指令,例如求解第 N 大的质数,或联立计算若干个方程的解。
由于问题实际上都是数学问题,所以主要的矛盾在算法设计上,而变量通常都是简单的数据类型,例如整数和小数等。
随着时代的发展,计算机应用于各行各业中,而不再是研究所和科学家的专利。此时,就需要用程序来表示更多实际生活中的对象,例如一个订单、一件产品等。
这些对象千变万化,各不相同。但是,我们都可以将它抽象为一个拥有若干属性和方法的抽象自定义变量。
例如订单拥有属性创建时间、过期时间等,产品拥有属性产品名、产品等级、产品价格等。为了配合计算机描述这种抽象变量,面向对象程序设计(Object-oriented Programming, OOP)的语言提岀了类的概念。
类可以多次被实例化,实例化后的产物叫做对象,如下图所示。
实际生活中,例如“产品类型”被实例化就相当于制造了一个新产品。
前面已经提到过,类是一个可以包含 0 或者多个成员的类型,这些成员可以是常量、字段、属性、方法等。
通过引入类,面向对象语言可以更加准确的模拟实际社会生产生活的各种事件。
面向对象的三大特性是:
单词 capsule 有胶囊之意,encapsulation 即为“使成为胶囊”的意思。
通过方法的重写和隐藏,子类还可以修改父类的行为。继承是面向对象程序设计代码复用能力的一种体现。
对于相同的方法,不同类型的子类有着不同的实现。接口和抽象类都是多态的体现。
词根 morph 代表形状,前缀 poly 则为“多”的意思。
通常认为面向对象程序设计有如下的好处:
由于问题实际上都是数学问题,所以主要的矛盾在算法设计上,而变量通常都是简单的数据类型,例如整数和小数等。
随着时代的发展,计算机应用于各行各业中,而不再是研究所和科学家的专利。此时,就需要用程序来表示更多实际生活中的对象,例如一个订单、一件产品等。
这些对象千变万化,各不相同。但是,我们都可以将它抽象为一个拥有若干属性和方法的抽象自定义变量。
例如订单拥有属性创建时间、过期时间等,产品拥有属性产品名、产品等级、产品价格等。为了配合计算机描述这种抽象变量,面向对象程序设计(Object-oriented Programming, OOP)的语言提岀了类的概念。
类可以多次被实例化,实例化后的产物叫做对象,如下图所示。
实际生活中,例如“产品类型”被实例化就相当于制造了一个新产品。
前面已经提到过,类是一个可以包含 0 或者多个成员的类型,这些成员可以是常量、字段、属性、方法等。
通过引入类,面向对象语言可以更加准确的模拟实际社会生产生活的各种事件。
面向对象的三大特性是:
1) 封装 (encapsulation)
类可以将它的成员私有化,只暴露它认为应当暴露给外界的成员。通过私有化成员,外界不必了解这些成员的实现细节。单词 capsule 有胶囊之意,encapsulation 即为“使成为胶囊”的意思。
2) 继承 (inheritance)
子类可以继承父类,从而简单地自动实现父类所有的成员,并增加自己的成员。通过方法的重写和隐藏,子类还可以修改父类的行为。继承是面向对象程序设计代码复用能力的一种体现。
3) 多态 (polymorphism)
实际上是继承的一种特殊情况,此时,子类一定会复写父类的行为(通常父类没有提供代码)。对于相同的方法,不同类型的子类有着不同的实现。接口和抽象类都是多态的体现。
词根 morph 代表形状,前缀 poly 则为“多”的意思。
通常认为面向对象程序设计有如下的好处:
- 通过继承和多态,增强代码复用能力。
- 通过封装避免不合理的访问。
- 更容易入门。通过将实际生活中的实体进行类比,初学者很容易理解类的概念。
- 更简单地设计并维护程序,程序更加便于分析、设计、理解,扩展性更好。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算