一、类和对象概述
1.类之间的常见关系:
依赖(“uses-a”):一个类的方法操纵另一个类的对象
聚合(“has-a”):一个类的对象包含另一个类的对象
继承(“is-a”):一个类继承了另一个类
2.应该尽可能地将相互依赖的类减至最少,就是让类之间的耦合度最小
3.一个对象变量并没有实际包含一个对象,而仅仅引用了一个对象。因此,Java对象之间的复制不能直接使用“=”,要使用clone方法,使用等号只是将两个变量指向同一个对象在内存中的地址。同理,比较两个对象相等也不能用“==”,要使用equals方法
4.GregorianCalendar类是一个日历类,它的月份表示是从0开始,即11表示12月(或者用Calendar.DECEMBER常量),而日子还是从1开始
5.习惯上在访问器方法名前面加上前缀get,而在更改器方法前面加上前缀set
6.一个.java源文件中可以有多个类,但是其中只能有一个public类,且如果有public类,这个.java文件名必须和public类名一致;如果没有public类,则对文件名没有要求。一个类生成一个.class文件,且文件名与类名一致,如果是内部类,则为外部类名+$+内部类名+.class
7.构造器与类同名,每个类可以有一个以上的构造器,其总是伴随着new操作符的执行被调用,但不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的
8.一个类的方法可以访问该类的任何一个对象的私有域
9.final修饰符大都应用于基本数据类型域,或不可变类的域(类中的磊哥方法都不会改变其对象,如String类)
二、静态域与静态方法
1.静态域属于类,不属于任何独立的对象
2.静态常量用static final修饰,可以通过“类名.常量名”的形势获得这个常量
3.静态方法不能操作对象,所以不能再静态方法中访问实例域。但是,静态方法可以访问自身类中的静态域
4.工厂方法是静态方法的一种常见用途
三、方法参数
1.Java总是采用值调用,方法得到的是参数值的一个拷贝
2.方法不能修改基本数据类型的参数(即数值型和布尔型),但可以改变对象参数的状态,不能实现让对象参数引用一个新的对象
四、对象构造
1.Java允许重载任何方法,重载的方法必须有不同的参数类型
2.如果没有在构造器中对某些域进行初始化,则默认将其初始化为0、false或null,在构造器中可以通过this调用同一个类的另一个构造器
3.在执行构造器之前,先对域执行显式的赋值操作(如果有)
五、包
1.import com.a.b.*导入的类不包括com.a.b.c下面的类
2.可以使用静态导入“import static”导入类的静态方法和静态域
3.标记为public的类可以被任意的类使用,没有指定public或private的类可以被同一个包中所有方法访问
4.类中的域一般都用private修饰以保证封装性
六、类设计技巧
1.一定将数据设计为私有
2.一定要对数据初始化,可以提供默认值,也可以在构造器中设置默认值
3.不要在类中使用过多的基本数据类型,用其他的类代替多个相关的基本数据类型的使用
4.不是多有的域都需要独立的域访问器和域更改器
5.使用标准格式进行类的定义
6.将职责过多的类进行分解
7.类名和方法名要能够体现他们的职责