Think in java 第一章 总结随笔

来源:互联网 发布:淘宝怎么起名字大全 编辑:程序博客网 时间:2024/04/25 00:22

前言

本章的标题是对象导论。原作者可能想要传达的是表述对象的概念,以及引入OOP的思想。但是我在看完第一章的时候,着实发现本章内容之广,已经涵盖了本书许多的章节了,但是没有详细的介绍。应该是后面做详解的。先来理解对象导论这四个字。
对象:数据封装形成的实体就是对象。对象是类的实例化。在生活中一个实体就可以看作是一个对象,例如桌子、凳子、一个人,一条鱼等等。万物皆对象。
导论:论述全文或全书的中心思想。  

抽象过程

"所有编程语言都提供抽象机制"。这句可以说是本节的精要,何为抽象?抽象机制的作用?带着类似的问题去学习还是很有必要的。

人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。

Smalltalkjava所基于的语言之一)的五个基本特性(总结:对象具有行为和动作状态)

1)万物皆是对象

2) 程序是对象的集合,它们通过发送消息来告知彼此所要做的

3) 每个对象都有自己的有其他对象所构成的存储

4) 每个对象都拥有其类型

5)某个特定类型的所有对象都可以接收到同样的消息

每个对象都有一个接口

Person

Name()

Speak()

Height()

为何每个对象都有一个接口?本节给出的解释是一个类被建立,当随心所欲的创建类的任意个对象后,当我们需要调用某个类来实现某种方法时,我们如何获得我们想要的对象。好的设计就是问题空间元素和解空间的对象之间创建一对一的映射,通过接口来定义,让他们来实现我。上图为一个Person接口。

每个对象都提供服务

在开发或理解一个程序设计时,最好的方法就是将对象相像为服务提供者。生活中也是每个事物(对象)都是服务者,例如椅子、拖把、电饭煲等等都在提供服务只是功能不同而已。

附带的好处就是,提高对象的内聚性。

被隐藏的具体实现

类创建者创建新数据类型的程序员需要向客户端程序员试用数据类型的类消费者暴露必须的部分而隐藏其他的部分为了阻止所有的东西都赤裸裸的暴露出来,其中就引入了访问控制,关于访问权限的介绍本书在第六章有详尽的介绍。本节只对为何要进行具体实现的隐藏作了介绍。其目的是防止客户端程序员毁坏到类。下面的链接是关于访问权限中关键字的内部设定边界http://blog.csdn.net/the_flying_pig/article/details/73135553

复用具体实现

最简单的复用就是一个类中的成员包含另一个类的对象。

复用---组合、聚合(has-a

组合:使用现有的类合成新的类。

聚合:组合动态发生。

继承

基类和子类产生差异的方法有两种

    1)  在子类中添加新的方法

    2)  覆盖(overriding)

伴随多态的可互换对象

public class Shape {    public void show(){        System.out.println("shape");    }    public static  void doSomthing(Shape shape){        shape.show();    }    public static void main(String[] args) {        Circle circle = new Circle();        doSomthing(circle);    }}class Circle extends Shape{    public void  show() {        System.out.println("circle");    }}
本节在对多态介绍的时候,只是简单的提到了向上转型的概念即将导出类看做是它的基类的过程称为"向上转型",其实就是子类转父类。本书的第八章会对多态进行详尽的讲解,到时应该会重新讲解向上转型的含义吧。

单根继承的结构

所有的类都继承自单一的基类  Java --- <Object>,

该节列举了单根继承带来的优点:

1)所有对象都具有一个共同的接口,将提高生产率。

2)所有对象都具备某些功能,这使得在你的系统中可以在每个对象上执行某些基本操作。

3)所有对象都可以很容易的在堆上创建。

4)使得垃圾回收的实现更为简单。这个本人就不懂了。看目录本书在第五章会讲到垃圾回收机制。就我目前的了解java是动态内存分配的方式,当内存使用较大时,会调用垃圾回收机制,循环遍历内存中的对象,将没有引用的对象清除掉。

容器(集合)

建议大家多去修行一下集合,可谓重点中的重点,推荐去看看数据结构一块的书,看完会发现收益良多,一种豁然开朗的感觉(针对像博主这样非科班专业的同学去看)。

对象的创建和生命期

对象置于:堆栈 静态存储区域;这将存贮空间分配和释放置于优先考虑位置;在编程是需要确切的知道对象的数量、生命周期、类型;查找和释放不需要过多时间

堆(heap)内存池:动态的创建对象; 相对而言,查找和释放需要更多的时间;Java采用了动态的内存分配方式

垃圾回收机制:所有的对象都是单根继承 只能以一种方式创建对象<在堆上创建>这两个特性结合起来

对象的生命期:

后面几个小节觉得没有必要再说,虽然很重要,但博主现在的水平也不知道说什么。

总结

对于设计良好的程序,通过阅读它就可以很容易地理解其代码。


原创粉丝点击