thinking in java ----reading note

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinking in java ----reading note相关的知识,希望对你有一定的参考价值。

# thinking in java 4th
# reading note
# victor
# 2016.02.10

chapter 1 对象入门

1.1 抽象的进步
    (1) 所有东西都是对象。
    (2) 程序是一大堆对象的组合,对象间通过消息联系。
    (3) 通过封装现有对象,可制作出新型对象。
    (4) 每个对象都有一种类型(某个类的实例)。
    (5) 同一类的所有对象都能接受相同的消息。
    
1.2 对象的接口 & 1.3 实现方法的隐藏
    接口规定了可对一个特定的对象发出哪些请求(访问权限)。
    public:    任何人均可访问。
    private:   只有自己可访问。
    protected: 本包内均可访问,除自己所在包之外只有继承的类可访问。
    default:   所在package范围内使用。

1.4 方案的重复使用
    在现有类的基础上组织一个新类(将现有类的对象置入一个新类),有时组织也被称作"包含"关系,比如一辆车包含了一个发动机.
    对象的组织具有很大的灵活性,新类的成员对象通常设为私有(private),这样可以在不干扰客户代码的前提下,从容地修改.

1.5 继承:重新使用接口
    使用继承相当于创建了一个新类,新类不仅包含了现有类的成员,同时,复制了基础类的接口。
    若只是继承一个类,而不作其他事情,那么来自基础类的接口就会直接照搬到派生类。这意味着派生类和基础类之间存在一种"等价"关系。完全可以将派生类的对象换成基础类的对象。
    有两种方法将派生类和基础类区分开:
    (1) 为派生类添加新函数。
    (2) 改善基础类的函数,即为派生类的函数建立一个新定义(重写)。
    很多时候,我们必须为衍生类加入新的接口元素,所以不仅扩展了接口,也创建了一种新的类型。这种新类型仍可以替换成基础类型,但这是"类似"的关系(父类不能调用子类的新方法)。

1.6 多形对象的互换使用
    base class shape(method: draw();erase();move();...)
    sub class: Circle;Square;Triangle;
    对于这一系列类,我们要将派生类的对象当作基础类的一个对象对待。如果增加一个子类:三角形,也能很好适用,这样程序有了扩展性。
    void dostuff(Shape s){
        s.erase();
        s.draw();
    }    
    Circle c = new Circle();
    dostuff(c);
    dostuff(c)将派生类Circle当作基类shape处理,这一过程叫作"upcasting"(上溯造型)。

1.6.1 动态绑定
    将一条消息发给对象时,如果并不知道对象的具体类型是什么(Cricle or Square ...),但是采取的行动是正确的,这种情况就叫作"多形性",面向对象语言实现多形性的方法叫作"动态绑定"。

1.6.2 抽象的基础类和接口
    抽象类和抽象方法

1.7 对象的创建和存在时间    

1.8 解决错误
    exception 控制 : try catch throw

1.9 多线程
    线程与锁:同一时间只有一个线程使用特定的内存空间。程序员创建一个对象,代表一把锁,所有线程访问资源时都必须检查这把锁。

1.10 永久性
    程序结束后,对象的生存期也结束。如果将对象声明成"永久性",即程序停止运行后,对象也能继续存在。

1.11 java & web

1.12 分析与设计

以上是关于thinking in java ----reading note的主要内容,如果未能解决你的问题,请参考以下文章

thinking in java -----reading note

Thinking in Java Reading Note(9.接口)

Thinking in java Reading Note(8.多态)

Serializable与transient的联合使用:动态管理成员属性——《Thinking in Java》随笔033

Thinking in Java

Thinking in Java & Writing in Python