1、少编写返回引用可变变量的访问器方法,容易破坏封装性
例如:
birth和e.getBirth引用的是同一对象,对birth调用更改
器方法就可以自动的改变这个雇员对象的私有状态,如果需要返回一个可变对象的引用,
应该对它进行克隆。
2、Java中类的初始化顺序
无继承情况:
a 静态成员变量和静态代码块首先初始化
b 普通成员变量和普通代码块初始化
c 执行构造函数。
有继承情况:
a 继承体系的所有静态成员变量和静态代码块初始化(先父类,后子类)
b 父类初始化完成(普通成员变量和代码块的初始化-->构造函数的调用)
c 子类初始化(普通成员变量和代码块的初始化-->构造函数)
加载、连接(验证 准备 解析)、初始化
3、静态导入,例如:import static java.lang.System.*;
import static java.lang.System.out;
应用:a 算术函数 b 冗长的常量
例如:
- Employee e = new Employee("Tom");
- Date birth = e.getBirth();
- birth.setTime(birth.getTime() - 1000000000);
Employee e = new Employee("Tom");
Date birth = e.getBirth();
birth.setTime(birth.getTime() - 1000000000);
birth和e.getBirth引用的是同一对象,对birth调用更改
器方法就可以自动的改变这个雇员对象的私有状态,如果需要返回一个可变对象的引用,
应该对它进行克隆。
2、Java中类的初始化顺序
无继承情况:
a 静态成员变量和静态代码块首先初始化
b 普通成员变量和普通代码块初始化
c 执行构造函数。
有继承情况:
a 继承体系的所有静态成员变量和静态代码块初始化(先父类,后子类)
b 父类初始化完成(普通成员变量和代码块的初始化-->构造函数的调用)
c 子类初始化(普通成员变量和代码块的初始化-->构造函数)
加载、连接(验证 准备 解析)、初始化
3、静态导入,例如:import static java.lang.System.*;
import static java.lang.System.out;
应用:a 算术函数 b 冗长的常量
本文深入探讨了Java编程中封装性的关键概念,特别强调了避免直接修改可变变量的风险,并提供了使用克隆来确保数据完整性的策略。此外,文章详细解释了Java类的初始化顺序,包括静态成员、普通成员和构造函数的执行流程。同时,介绍了Java中的静态导入特性及其应用场景,为简化代码提供了实用建议。



352

被折叠的 条评论
为什么被折叠?



