[size=medium]1、少编写返回引用可变变量的访问器方法,容易破坏封装性
例如:[/size]
[size=medium] [color=red] birth和e.getBirth引用的是同一对象[/color],对birth调用更改
器方法就可以自动的改变这个雇员对象的私有状态,如果需要返回一个可变对象的引用,
应该对它进行克隆。
2、[color=red]Java中类的初始化顺序[/color]
无继承情况:
a 静态成员变量和静态代码块首先初始化
b 普通成员变量和普通代码块初始化
c 执行构造函数。
有继承情况:
a 继承体系的所有静态成员变量和静态代码块初始化(先父类,后子类)
b 父类初始化完成(普通成员变量和代码块的初始化-->构造函数的调用)
c 子类初始化(普通成员变量和代码块的初始化-->构造函数)
加载、连接(验证 准备 解析)、初始化
3、静态导入,例如:import static java.lang.System.*;
import static java.lang.System.out;
应用:a 算术函数 b 冗长的常量[/size]
例如:[/size]
Employee e = new Employee("Tom");
Date birth = e.getBirth();
birth.setTime(birth.getTime() - 1000000000);
[size=medium] [color=red] birth和e.getBirth引用的是同一对象[/color],对birth调用更改
器方法就可以自动的改变这个雇员对象的私有状态,如果需要返回一个可变对象的引用,
应该对它进行克隆。
2、[color=red]Java中类的初始化顺序[/color]
无继承情况:
a 静态成员变量和静态代码块首先初始化
b 普通成员变量和普通代码块初始化
c 执行构造函数。
有继承情况:
a 继承体系的所有静态成员变量和静态代码块初始化(先父类,后子类)
b 父类初始化完成(普通成员变量和代码块的初始化-->构造函数的调用)
c 子类初始化(普通成员变量和代码块的初始化-->构造函数)
加载、连接(验证 准备 解析)、初始化
3、静态导入,例如:import static java.lang.System.*;
import static java.lang.System.out;
应用:a 算术函数 b 冗长的常量[/size]