对象导论 - 02 (面向对象如何设计)

1. 隐藏具体实现(封装)

1)可以保护数据不被轻易修改,可以减少程序的 bug。Java 使用 public, private, protected 关键字和默认的包访问权限进行显式访问控制。

2)让接口和实现分离,可以轻易地进行重构。

2.复用具体实现(组合与继承)

组合:使用现有的类合成新的类,这个概念叫组合。组合被视为"has-a" 拥有关系,比如”汽车拥有引擎“。组合带来了极大的灵活性。

继承:继承被视为"is-a or is-like-a" 关系。

3.伴随多态的可互换对象

编译器无法产生传统意义上的函数调用,一个非面向对象编程的编译器产生的函数调用会引起所谓的“前期绑定(静态绑定)”。

绑定:方法与方法调用者(方法主体)相关联。

前期绑定:在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现,比如 C;在 Java 中被 private、final、static 修饰的方法和构造方法是前期绑定的。

后期绑定:在运行时根据具体对象的类型进行绑定。这需要建立一个机制,在运行期判断方法主体的类型。

4.单根继承结构

所有的类继承于单一的基类,保证所有的对象都具有某些功能,参数传递可以得到极大的简化,使得垃圾回收器的实现变得容器的多。所有对象都保证具有类型信息,不会因为无法确定对象的类型而陷入僵局。

5.参数化类型(范型)

通常,容器中只存储Object,对于放进去的对象可能会丢失类型信息。当对象取出时,必须向下转型和运行时检查类型信息。为了解决这个问题,使用参数化类型机制,编译器可以自动定制作用于特定类型上的类。

ArrayList<Shape> shapes = new ArrayList<Shape>();

233

猜你喜欢

转载自www.cnblogs.com/lemos/p/9266556.html