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();
  • 存在意义:可以独立实现一个接口,与外部类无关。
  • 例子:工厂方法、线程、框架。。。
    1. Swing-UI控制框架:事件驱动系统。
    2. 框架:分离变与不变。框架不知道任何具体的信息。action()通过内部类。

11、类型信息Class

  • 运行时发现和使用类型信息。
  • RTTI:Run-Time Type Information
  • 类字面常量:Integer.class,Object.calss;
  • 泛化的Class引用:Class c <==> Integer.class
  • Class类:只是Object的子类。所以Integer.class与Number.class没有继承关系。
  • 编译期未知:Class< ? > forName(String className):
  • 编译期已知:Integer.class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值