think_in_java笔记

1、对象导论

    计算机是头脑延伸的工具

    抽象:所有编程语言、数学都是抽象。所能解决的问题复杂性,直接取决于抽象的类型和质量。

    对象:具有状态(内部数据),方法(在自身上执行操作),标识(内存唯一地址)

    对象:每个对象都是服务提供者。

    对象:通过引用操作对象。引用的对象。java只有这一种操作方式。

    直接常量:200L;10f;0x2f;有时候需要告诉编辑器常量类型

    垃圾回收:只与内存有关。GC负责释放对象占用的内存。

    finalize:回收之前调用。释放非对象内存。比如本地方法创建的

    命名:见名知义、简短(保持特有,其他使用缩写)

    

6、访问权限控制

    访问控制:隐藏具体实现:隔离变化,变与不变。与最初的实现并不恰当有关(未来重构)

    包:库单元。未命名包:默认包。

    源文件:编译单元。编译单元不能并列有多个public类,(public类内部可以再有public类)

    权限:public(接口) > protected(继承+包) > 包(default) > private

    

7、复用类

    复用类:利用现有类生成新类。java所有问题的解决都是围绕“类”展开的。    

    组合:新类中引入现有类的对象,作为成员变量/对象。String被无数次的组合了。

    继承:会继承现有类的接口。组合不会。

    代理:java没有对此直接支持。间接实现:新类中引入现有类的对象(组合),然后新类暴漏成员对象的所有方法(类似继承)

    

8、多态

    多态:分离“做什么”、“怎么做”。分离接口与实现。

    封装:合并特征和行为来创建新的数据类型。

    隐藏实现:接口与实现分离。

    构造器:不是多态的。是隐藏static的

    向上转型:安全的。父类不会有大雨导出类/子类的接口。

    

9、接口

    接口:使抽象更进一步。

    完全解耦:抽象类做不到,必须加入到抽象类的继承结构中。

    接口域:自动隐藏式static,final的。    

    

10、内部类

    .this:内部类方法中:return Outer.this;

    .new:  outer.new Inner();

    存在意义:可以独立实现一个接口,与外部类无关。    

    例子:工厂方法、线程、框架。。。

    Swing-UI控制框架:事件驱动系统。

    框架:分离变与不变。框架不知道任何具体的信息。action()通过内部类。

    

11、类型信息Class

    运行时发现和使用类型信息。

    RTTI:Run-Time Type Information

    类字面常量:Integer.class,Object.calss;

    泛化的Class引用:Class<Integer> c <==> Integer.class

    Class类:只是Object的子类。所以Integer.class与Number.class没有继承关系。

    

    编译期未知:Class<?> forName(String className): 

    编译期已知:Integer.class

    

猜你喜欢

转载自luckywnj.iteye.com/blog/2261620