Java 对象导论(Think In Java)

对象导论(Think In Java)

1.1 抽象过程

  • 解决问题时要基于计算机的结构,而不是所要解决的问题的结构。

  • OOP 允许根据问题来描述问题,而不是根据运行解决方案的计算机来描述问题

  • 五个特性

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

1.2 每个对象都有一个接口

  • 创建抽象数据类型(类)是面向对象程序设计的基本概念之一
  • 类描述了具有相同特性(数据元素)和 行为(功能)的对象集合

1.3 每个对象都提供服务

  • 对象视作服务提供者,提高高内聚
  • 每个对象都有他所能提供服务的内聚的集合

1.4 被隐藏的具体实现

  • 开发角色:类创建者(创建新的数据类型)和客户端程序员(类的消费者)
  • 访问控制
    • 让客户端程序员无法触及他们不应该触及的部分
    • 允许库设计者可以改变类内部的工作方式而不用担心影响到客户端程序员
  • 边界: public、private、protected
    • public:任意可用
    • private: 类型创建者和类型的内部方法可用
    • protected: 类型创建者、类型的内部方法和继承的类可用
    • 包访问权限:默认的访问权限,访问同一个包下的其他类成员

1.5 复用的具体实现

  • 使用该类的一个对象即为简单的复用,可将该类的一个对象置于新类中
  • 一个类可包含任意数量、任意类型的其他对象以任意可以实现新的类中想要的功能的方式所组成(组合,动态发生的为聚合,has-a关系)

1.6 继承

  • 一个新类以现有的类为基础进行创建
  • 源类(基类、超类、父类),副本(导出类、继承类、子类)
  • 基类型包含其所有导出类型所共享的特性和行为
  • 导出类与基类产生差异:
    • 添加新方法
    • 改变现有基类的方法和行为(覆盖)

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

  • 替代原则(纯粹替代):继承类只覆盖(is-a 关系)
  • 继承类添加新的方法和行为(is-like-a 关系)

1.7 伴随多态的可互换对象

  • 一个非面向对象编程的编译器产生的函数调用会引起所谓的前期绑定
  • 编译器确保被调用方法的存在,并对调用的参数和返回值执行类型检查(无法提供此类保证的语言被称为是弱类型的)
  • 将导出类看作是它的基类的过程称为向上转型
void doSomething(Shape shape){
  shape.draw();
  shape.erase()
}
doSomething(Circle)
doSomething(line)

1.8 单根继承结构

  • 所有的类都继承自单一的基类(Object)
  • 单根继承结构中的所有对象都具有一个共用接口
  • 单根继承结构使垃圾回收器的实现变得容易得多

1.9 容器(集合)

  • 用于存储未知数量的对象
  • List(用于储存序列)、Map(关联数组,建立对象之间的关联)

1.9.1 参数化类型

  • 创建的容器知道自己要保存的对象的类型,不需要向下转型以及消除犯错误的可能(参数化类型机制)
  • 基类向下转换为具体的类型(向下转型)
  • ArrayList shapes = new ArrayList()

1.10 对象的创建和生命周期

  • 对象的生命周期和存储空间可以在编写程序时进行确定,将对象置于堆栈(自动变量或限域变量)或静态存储区域俩实现
  • 堆的内存池中动态创建对象
  • java采用了动态内存的分配方式

1.11 异常处理:处理错误

  • 异常处理将错误直接置于编程语言中

1.12 并发编程

  • 多线程执行任务

1.13 Java与Internet

  • 它解决了在万维网上的程序设计问题
posted @ 2021-02-19 17:12  江湖有一青衫仗剑  阅读(133)  评论(0)    收藏  举报