(一)OOP思想详解

最后更新于:2022-04-01 21:41:47

1.关于抽象的进步。面向对象OOP的设计思路其实是把“抽象”这种编程方法进行了新的解释说明,把具体的人或事务抽象成了“类”“对象”的形式。 面向对象的主要思想: - 万物即对象 - 程序是对象的组合 - 每个对象都有自己的空间,可以容纳其他对象 - 每个对象都有自己的实例 - 同一类的所有对象都能接收相同的消息 2.对象的接口 通过类构造对象,对象开放给使用者接口,此时使用者可以通过类的对象的接口给对象发出请求。 3.面向对象编程要提供给两个使用者:类的创建者和使用者。类的创建者的职责是从头创建一个类,提供给使用者接口就好,而类的使用者(书中称之为客户程序员)直接拿来接口使用,而不需要了解这个类具体是什么构造。同时类的创建者也不用有顾虑怕类被破坏或者修改。 4.方案的重复使用 我们知道在面向对象中一个类的对象可以置入另外一个类中,这叫做“创建一个成员对象”,在新建类的时候,首先可以考虑把不同类的对象组织起来使用,可以有效减少代码的复杂度,减少不必要的继承。 5.继承的进一步解释 在以前的认识中,继承只是用来创建新类,和旧的类区别开来,书中对创建继承的必要性进行了一定的探讨: - 为什么要使用继承:要创建新的类和已有类功能相似,但是有一定的新功能,此时使用继承,把旧的类所有的成员继承到新类中,复制了旧类的接口 - 如何区分衍生类和旧类:a.为衍生的类增加新的函数,提供新的功能;b.改善基础类的现有函数 6.关于类型的上溯 这个概念这次深刻的理解了。 举例: 此时有一个这样的类的构造: ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/207cc9dd61d8dcc78db1fda6a9c84acb_521x384.jpg "") 同时有这样的一个函数: ~~~ void doStuff(Shape s){ s.draw(); ... ... } ~~~ 此时如果定义了新的形状,则只需要指出该形状的类衍生于Shape类即可调用Shape类的函数: ~~~ Circle c = new Circle(); Triangle t = new Triangle(); Square s = new Square(); doStuff(c); doStuff(t); doStuff(s); ~~~ 这里把衍生的类当成了它的基础类型处理,这种方法就叫做Upcasting,只需要指出某个类所属的基本类型,即可让它执行基础类的具体功能。
';