HeadFirst 读书笔记

java的工作方式

primitive 原始数据类型

每种primitive主数据类型变量有固定的位数(杯子的大小),存放数值的primitive主数据类型有下列6种大小

变量就像是杯子,是一种容器,装载某些事物

reference 引用数据类型

对象 声明、创建、赋值的3个步骤

primitive vs reference

注: 对primitive主数据类型的变量来说,变量值就是多代表的值(如5、-26.7 或 'a'),对reference引用变量来说,变量值是指向堆内存中对象的一个地址

使用java类库

你必须指明程序代码中所使用到的类的完整名称

  • 可以帮助组织项目或函数库, 相对于一大堆零散的类,以功能来组织会比较好
  • 包可以创造出命名空间,防止包冲突
  • 包可以通过限制 同一包之间的类才能相互存取以维护安全性

重载vs重写

重写

重载

两个方法的名称相同,但参数不同, 与继承和多态无关

抽象类

有些类不应该被实例化!

抽象类:

  • 不可用被实例化,但还是可以使用抽象类来声明为引用类型给多态使用
  • 抽象的类除了被继承之外,是没有用途,没有值,没有目的的
    抽象方法:
  • 没有实体
  • 如果你声明了一个抽象方法,就必须将类也标记为抽象的
    为什么要有抽象方法?
  • 将可继承的方法体放在父类中是个好主意,但有时就是没办法做出给任何子类都有意义的共同程序代码,抽象方法的意义就是就算无法实现处方法的内容,但还是可以定义出一组子类型共同的协议
  • 抽象的方法没有内容,它只是为了标记出多态而存在

你必须实现所有的抽象方法

实现抽象的方法就如同重写(覆盖)父类的方法一样

终极对象Object

  • 在java中所有类都是从Object这个类继承出来的
  • 没有直接继承过其他类的类会隐式的继承Object

Object对象重点方法

Object类的主要作用:

  • 作为多态,让方法可以应付多种类型的机制
  • 作为顶层父类,提供java世界中所有类型都拥有的方法
  • 作为多线程的锁

使用Object类型的多态引用是会付出代价的

编译器会根据引用类型来判断有哪些method可以调用,而不是根据Object确实类型

你只有在引用变量的类确实有这个方法时才能调用它

接口

多重继承导致 二义性

接口是我们的救星

接口可以用来解决多重继承的问题又不会产生二义性问题

构造函数

垃圾回收

猜你喜欢

转载自juejin.im/post/5d8867906fb9a06afd664398
今日推荐