封装指的是数据隐藏,关键在于绝对不能让类中的方法访问其他类的实例域,程序仅通过对象的方法与对象数据进行交互。
在类之间,最常见的关系有:
- 依赖:一个类的方法操纵另一个类对象
- 聚合:一个对象包含一些其他类的对象
- 继承:子类与父类
局部变量不能初始化为null,需要手动设置new或者null,类变量是自动初始化的(0,False,null)。
不要编写返回引用可变对象的访问器方法,这使得外部程序可以修改实例域。正确做法是返回实例变量的克隆。
一个方法可以访问所属类所有对象的私有数据
final修饰符大都应用于基本类型域或者不可变类的域。对于可变的类,final只能表示该引用不能指向另外一个对象。
java参数传递永远是值传递,包括对象引用。
局部变量不会被自动初始化,实例变量会被初始化为0,false,null
仅当类没有提供任何构造器时,系统才会生成一个默认的无参构造器。
java中可以对实例域进行初始化操作,初始化的值不一定是常量。比如:
使用this关键字,可以在一个构造器中,调用另外一个构造器。
初始化块不需要static关键字,在构造方法之前运行。static块在类加载时运行。
import static 导入静态方法和静态域
类设计的技巧:
- 一定要保证数据私有
- 一定要对数据初始化
- 不要在类中使用过多的基本类型,可以对某几个基本类型封装成类
- 不是所有的域都需要独立的域访问器和域更改器
- 将职责过多的类进行分解
- 类名和方法名要可以体现他的职责