Thinking in JAVA笔记——第一章 对象导论

本章介绍面向对象的基本概念和原则

1.1抽象

我的理解:隐去复杂的,无用的属性,留下程序所需要的

1.2每个对象都有接口

概念上的理解:定义类对外部提供的服务(方法),通过向对象发送消息来使用服务

JAVA接口概念interface:见后文

问题:接口和实现的概念,为什么引入接口机制(需要看具体章节)

1.3对象都提供服务

  1.问题分解(decompose)——自顶向下设计原则:考虑需要什么服务,再考虑需要的服务依赖什么服务,直到明确所需的对象存在或足够简单的编码实现

     优点:使设计容易,高内聚性(fit together)

  2.OOP设计原则之一:使对象良好的完成一项任务,不要做太多的任务(多设计几个对象共同完成)

     优点:易于复用,易于阅读

1.4 隐藏具体实现

  1.分离类创建者(API提供者)和类使用者(客户端程序员)

     优点:1.容易改变内部实现而不影响外部使用(易变性,易于升级,维护)

      2.减少客户端程序Bug(安全性)

  2.访问控制(access control):只提供服务,拒绝内部访问,优点同上

  3.Java使用3个关键词来设定访问控制

    public,private:只有类内部可以使用,protected:类内部,同一package和子孙类内部可以使用

  4.默认访问权限:不知道关键字,包内可访问,包外拒绝(实际相当于protected?)

1.5实现的复用Reuisng(实际讲的是组合)

  1.组合/聚合:类内使用别的类的对象,”has-a“关系

  2.灵活性:类内对象一般为private,可以随意、动态的改变

  3.OOP应该首先考虑组合,再考虑继承,以免设计过于复杂(相关书籍《设计模式》,框架与设计模式的概念等)

1.6继承

  1.继承:以现有的类为基础,复制,增加,和改变

  2.类可以描述特征和行为,类之间还存在关系

  3.子类继承父类所有的特征、行为(包括不可操作的private类型)和接口,所有父类的消息都可以作用于子类,”is-a“关系

  4.子类可有有新的特征和行为,更重要的:子类可以重写/覆盖(overriding)父类的方法

  1.6.1”是一个”与“像是一个”关系 Is a,is lika a

    is-a:子类没有新的方法——替代原则

    is-like-a:子类添加新的方法——不纯粹的替代

    我的理解:is-a用于使用不同的方法实现父类的接口,is-lika-a适用于父类较抽象,而子类较具体,需要添加新的特征和行为

1.7 多态

   1.子类调用父类方法,编译器在编译时间不确定执行哪一段代码,对象会去执行恰当的代码

  2.非oop,前期绑定,编译器产生函数代码的绝对入口地址

   oop:后期绑定,编译器知道函数存在,执行参数及返回值坚持,但不明确具体代码,运行时间才知道执行代码。java默认为动态绑定,详细见多态章节

  3.向上转型(upcasting)把子类对象传给需要父类对象的方法,安全,符合逻辑,多态机制在运行时间自动决定执行代码,使程序设计更简单和更易扩展

*多态的一个优点:定义新的子类可以将其新方法写在子类的定义中覆盖父类的方法,不必改变父类的代码。

极大改善了设计,降低维护的代价!

*一个简单的多态例子:一个方法需要父类的对象作为参数。方法中向该参数对象发送消息(调用该对象方法)。

子类的对象可以作为参数传递给该方法,而运行时间自动定位的子类的方法执行不同的代码。

 

1.8单根继承结构

 所有的类都继承单根父类Object

1.9  容器

一种特殊的对象,包含其他对象的引用,可以轻松动态扩展。(实质包含内部不同的数据结构实现)

1.9.1泛型

1.10对象的生命周期

创建和销毁对象

java提供动态创建对象(在heap中)和垃圾回收机制,比才c++更安全,编码更容易,代价是一定的效率和灵活性。

1.11异常处理

异常是一个对象,在出做事被异常处理器获取

java强迫使用异常机制,使编码容易和可靠

1.12并行编程

java多线程,并行和同步,资源共享等概念(具体章节详解)

1.13java与互联网:略

1.14总结

OOP的好处:代码和设计更容易理解和复用,更容易维护等等

posted @ 2015-04-16 19:21  cjrzh  阅读(197)  评论(0编辑  收藏  举报