Java核心技术卷一:对象和类

类之间的关系

  • 依赖(“uses-a”):依赖意味着耦合,应该尽量减少依赖
  • 聚合(“has-a”)
  • 继承(“is-a”)
    Java核心技术卷一:对象和类

使用预定义类

Date类:表示时间点的Date类

LocalDate类:表示大家都熟悉的日历表示法

静态域与静态方法

在下面两种情况下使用静态方法:

  • 一个方法不需要访问对象状态,其所需参数都是通过显示参数提供
  • 一个方法只需要访问类的静态域

方法参数

**按值调用:**表示方法接收的是调用者提供的值

按引用调用:表示方法接收的是调用者提供的变量地址

Java中都是按值调用,也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容

对象构造

重载的方式:

  • 参数的个数
  • 参数的顺序
  • 参数的类型

默认构造器:仅当类没有提供任何构造器的时候,系统才会提供一个默认的构造器

初始化块:

  • 只要构造类的对下,初始化块就会被执行
  • 先执行初始化块,再执行构造器
  • 对静态域需要使用静态的初始化块来初始化,再类第一次加载的时候,将会进行静态域的初始化

调用构造器的步骤:

  1. 所有数据域被初始化为默认值
  2. 按照再类声明中出现的次序,依次执行所有域初始化语句和初始化块
  3. 如果构造器的第一行调用了第二个构造器,则执行第二个构造器主体
  4. 执行这个构造器的主体

初始化顺序:静态块 > 普通块 > 构造函数

从你一起的角度看,嵌套的包之间没有任何关系。例如:java.utiljava.util.jar之间毫无关系。每一个都拥有独立的类集合

在包中定位类是编译器的工作。类文件中的字节码肯定使用完整的包名来引用其它类。

类路径

在1.5版本之后,JRE会自动将当前路径下的类文件作为搜索路径,不用单独设置

搜寻类的步骤

  1. 首先检查存储在jre/libjre/lib/ext目录下的文件
  2. 再根据类路径搜索对应的文件

设置类路径

  • 通过 -classpath 设置 java -classpath xxx
  • 通过设置CLASSPATH环境变量

类设计技巧

  • 一定要保证数据私有
  • 一定要对数据进行初始化
  • 不要再类中使用过多的基本类型,可以用一个对象包一下
  • 不是所有的域都需要独立的域访问器和域更改器
  • 将职责过多的类进行分解
  • 类名和方法名要有自描述
  • 优先使用不可变的类