C#面向对象概述

早期的程序实际上就是一连串对计算机下达的指令,例如求解第 N 大的质数,或联立计算若干个方程的解。

由于问题实际上都是数学问题,所以主要的矛盾在算法设计上,而变量通常都是简单的数据类型,例如整数和小数等。

随着时代的发展,计算机应用于各行各业中,而不再是研究所和科学家的专利。此时,就需要用程序来表示更多实际生活中的对象,例如一个订单、一件产品等。

这些对象千变万化,各不相同。但是,我们都可以将它抽象为一个拥有若干属性和方法的抽象自定义变量。

例如订单拥有属性创建时间、过期时间等,产品拥有属性产品名、产品等级、产品价格等。为了配合计算机描述这种抽象变量,面向对象程序设计(Object-oriented Programming, OOP)的语言提岀了类的概念。

类可以多次被实例化,实例化后的产物叫做对象,如下图所示。

类和对象

实际生活中,例如“产品类型”被实例化就相当于制造了一个新产品。

前面已经提到过,类是一个可以包含 0 或者多个成员的类型,这些成员可以是常量、字段、属性、方法等。

通过引入类,面向对象语言可以更加准确的模拟实际社会生产生活的各种事件。

面向对象的三大特性是:

1) 封装 (encapsulation)

类可以将它的成员私有化,只暴露它认为应当暴露给外界的成员。通过私有化成员,外界不必了解这些成员的实现细节。

单词 capsule 有胶囊之意,encapsulation 即为“使成为胶囊”的意思。

2) 继承 (inheritance)

子类可以继承父类,从而简单地自动实现父类所有的成员,并增加自己的成员。

通过方法的重写和隐藏,子类还可以修改父类的行为。继承是面向对象程序设计代码复用能力的一种体现。

3) 多态 (polymorphism)

实际上是继承的一种特殊情况,此时,子类一定会复写父类的行为(通常父类没有提供代码)。

对于相同的方法,不同类型的子类有着不同的实现。接口和抽象类都是多态的体现。

词根 morph 代表形状,前缀 poly 则为“多”的意思。

通常认为面向对象程序设计有如下的好处:

  • 通过继承和多态,增强代码复用能力。
  • 通过封装避免不合理的访问。
  • 更容易入门。通过将实际生活中的实体进行类比,初学者很容易理解类的概念。
  • 更简单地设计并维护程序,程序更加便于分析、设计、理解,扩展性更好。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/22371.html

(0)
上一篇 2021年7月20日
下一篇 2021年7月20日

相关推荐

发表回复

登录后才能评论