`

第一章 对象引论-读书笔记

阅读更多

程序设计就是对复杂度的管理

在头脑中创建一个模型,用于加强对Java的深入理解,如果你遇到疑问,你就的将它反馈给你的模型,并推断答案.

每个对象都有一个接口

尽管我们在面向对象程序设计中实际所做的创建新的数据类型,但实际上所有面向对象设计语言都是用Class关键词来表示数据类型.当你看到类型(Type)一次时,请将其作为类(Class)来考虑,反之亦然.

面对对象的方法并不是局限于构建仿真程序,任何程序都是你设计的系统的一个仿真的概念,面向对象技术确实可以将大量的问题讲解为一个简单的解决方案.

每个对象都提供服务

将对象作为服务提供者看待是一个伟大的简化工具,它不仅在设计过程中非常有用,而且当其他人试图理解你的代码或重用某个对象时,它会使将对象调整到适应其设计的过程变得简单的.

被隐藏的具体实现

public表示紧随其后的元素对任何人都是可用的.

private表示除类型创建者和该类型的内部方法之外任何人都不能访问的元素.

protected与private差别在于继承类可以访问protected成员.

default可以访问同一个包中的其他成员.

继承:复用接口

通过继承而产生的类型等价是理解面向对象程序设计方法内涵的重要门槛.

  • 是一个(is-a)与像一个(is-like-a)关系

is-a:完全相同的接口类型

is-like-a:添加新的接口元素

伴随多态的可互换对象

后期绑定

  • 抽象基类和接口

抽象:抽象方法只能在抽象类内部创建,当该类被继承时,抽象方法必须被实现,否则继承类依然是一个抽象类.创建抽象方法使得你可以将一个方法置于接口中而不必被迫为此方法提供可能毫无意义的方法体.

接口:提供了接口与实现的完美分离,可以将多个接口组合到一起

接口可以继承多个接口。
不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。
interface b{}
interface c{}
interface a extends b,c{}//对


class b{}
class c{}
class a extends b,c{}//错


类的继承和接口的实现,接口也是可以继承接口的。 .

 

对象的创建、使用和生命周期

C++对象的存储空间和生命周期可以在编写程序时确实.

Java动态创建对象.

C++必须通过编程方式来确定何时销毁对象.

Java自动发现对象何时不再使用.

  • 集合(collection)与迭代器(iterator)

List(列表,用于储存序列)

arraylist:随机访问元素是一个花费固定时间的操作

linkedlist:随机选取元素需要在列表中移动,其代价是高昂的,访问越靠近表尾的元素,花费的时间越长.

另一方面,如果你想在序列中间插入一个元素,linkedlist却比arraylist要小.

在设计阶段,你可以使用linkedlist,在优化系统性能时,改用arraylist.基类List和迭代器所带来的抽象把你在容器之间转换时对代码产生的影响降到了最低.

Map(散列表,也被称为关联数组,用来建立对象之间的关联)

Set(集类,用于储存一类对象)

Queue(列队)、Tree(树)、Stack(堆栈)

  • 单根继承结构
  • 向下转型(downcasting)与模板/泛型(template/generic)
  • 保证正确清楚
  • 垃圾回收与效率和灵活性

异常处理:处理错误

并发

持久性

Java与Internet

  • web是什么
  • 客户端编程
  • 服务器端编程

Java为什么成功

  • 系统易于表达、易于理解
  • 通过类库得到最大支持
  • 错误处理

Java与C++

总结

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics