第1章 对象导论 - 《Java编程思想》读书笔记

第1章 对象导论

1.1 抽象过程

  • 面向对象的五个基本特性:

    • 万物皆对象
    • 程序是对象的集合,它们通过发送消息来告知彼此所要做的
    • 每个对象都有自己的由其他对象所构成的存储
    • 每个对象都拥有其类型
    • 某一特定类型的所有对象都可以接收同样的消息
  • 对象具有状态、行为和标识

    • 状态:内部数据
    • 行为:方法
    • 标识:内存中唯一的地址

1.2 每个对象都有一个接口

  • 接口确定了某一特定对象所能发出的请求,程序中满足这些请求的代码和隐藏的数据一起构成了实现

1.3 每个对象都提供服务

  • 将对象想象为服务提供者,程序本身将向用户提供服务,它将通过调用其他对象提供的服务来实现这一目的

1.4 被隐藏的具体实现

  • 访问控制的存在原因:
    • 让客户端程序员无法触及他们不应该触及的部分
    • 允许库设计者可以改变内部的工作方式而不用担心会影响到客户端程序员

1.5 复用具体实现

  • 组合:使用现有的类合成新的类
    • 如果组合是动态发生的,则称为聚合
    • 组合被视为"has-a"(拥有)关系

1.6 继承

  • 导出类与基类具有相同的类型:所有可以发送给基类对象的消息,同时也可以发送给导出类的对象
  • 覆盖(重写):在导出类中创建基类方法的新定义
  • 使用相同的接口方法,但想在新类型中做不同的事情

1.6.1 “是一个”与“像是一个”关系

  • "is-a"(是一个)关系:继承只覆盖基类的方法,导出类和基类具有完全相同的接口,即替代原则
  • "is-like-a"(像是一个)关系:新类型具有旧类型的接口,但它还包含其他方法

1.7 伴随多态的可互换对象

  • 后期绑定:当向对象发送消息时,被调用的代码直到运行时才能确定

  • 在Java中,动态绑定是默认行为

  • 向上转型:把导出类看做是它的基类,因为导出类可以接收任何发送给基类的消息

1.8 单根继承结构

  • 所有类都最终继承自Object

1.9 容器

  • 容器:不需要知道将来会有多少个对象置于容器中,只需要创建一个容器对象,让它处理所有细节
  • 不同容器的区别:
    • 不同容器提供了不同类型的接口和外部行为
    • 不同容器对于某些操作具有不同的效率

1.9.1 参数化类型

  • 向下转型是不安全的,并且运行时需要额外的检查
  • Java SE5中增加了参数化类型(泛型)

1.10 对象的创建和生命期

  • 动态内存分配方式:在被称为的内存池中动态地创建对象

    • 优点:直到运行时才直到需要多少对象,它们的生命周期如何,以及它们的具体类型是什么,具有灵活性
    • 相比于堆栈静态存储区域,需要大量的时间在堆中分配存储空间
  • 垃圾回收器机制:自动发现对象何时不再被使用,并继而销毁它

1.11 异常处理:处理错误

  • 异常是一种对象,它从出错地点被抛出,并被专门设计用来处理特定类型错误的相应的异常处理器捕获
  • 异常提供了一种从错误状态进行可靠恢复的途径

1.12 并发编程

  • 把问题切分成多个可独立运行的部分(任务),从而提高程序的响应能力
  • 在程序中,这些彼此独立运行的部分称为线程,上述概念被称为并发
  • 共享资源:必须在使用期间被锁定
posted @ 2021-02-28 16:01  一天到晚睡觉的鱼  阅读(92)  评论(0)    收藏  举报