1.3 每个对象都提供服务
- 在良好的面向对象设计中,每个对象都可以很好地完成一项服务,但是它并不试图做更多的事。
1.4 被隐藏的具体实现
- 访问控制(public,private,protected)原因有两个
- 让客户端程序员无法触及他们不应该触及的部分—这些部分对数据类型的内部操作来说是必需的,但不是用户解决特定问题所需的借口的一部分
- 允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员。
1.5 复用具体实现
- 实际上,在简历新类时,应该首先考虑组合,因为它更加简单灵活。如果采用这种方式,设计会变得更加清晰。一旦有了一些经验之后,便能够看出必须使用继承的场合了。
1.6 继承
1.7 伴随多态的可互换对象
- generic
- 单根继承机构保证所有对象都具备某些功能。所有对象都可以很容易地在堆上创建,而参数传递也得到了极大的简化
- 单根继承结构使垃圾回收器变得容易得多,而垃圾回收器正是JAVA相对C++的重要改进之一。由于所有对象都保证具有其类型信息,因此不会因无法确定对象的类型而陷入僵局
1.9 容器→ 参数化类型
1.10 对象的创建和生命期
- C++认为效率控制是最重要的议题,所以给程序员提供了选择的权利。为了追求最大的执行速度,对象的存储空间和生命周期可以在编写程序时确定,这可以通过将对象置于堆栈或静态存储区域来实现。这种方式将存储空间分配和释放置于优先考虑的位置,某些情况下这样控制非常有价值。但也牺牲了灵活性,因为必须在编写程序时知道对象确切的数量,生命周期和类型。
- 方法二是,被称为堆的内存池中动态地创建对象
- Java完全采用了动态内存分配方式
- C++中必须通过编程方式来确定何时销毁对象,这可能会因为不能正确处理而导致内存泄漏。Java提供了垃圾回收器的机制,它可以自动发现对象何时不再被使用,并继而销毁它。
- Java内置
- Java内置:如果有多个并行任务都要访问同一项资源,则某任务锁定某项资源,完成其任务,然后释放资源锁,使其他任务可以使用这项资源。