一、类之间的关系:
—1》依赖:uses-a 订单-计数器
—2》聚合:has-a 书架-书
—3》继承:is-a 动物-猫
二、预定义类
—1》对象和对象变量:对象变量并没有实际包含一个变量,二仅仅是引用一个变量。
—-》例:Data data=new Data();
*声明了两个对象,一个是对象Data();另一个是data()的引用。
—2》局部变量不会自动初始化,所有的java对象都存储在堆中
—3》java中的CregorianCalendar类
—》Data类和CregorianCalendar类区别:
java类库中包含了两个类,一个是用来表示时间点的Data()类,一个是表示日历的CregorianCalendar();
三、自定义类
—1》构造器:—构造器与类同名
—构造器没有返回值
—构造器总是伴随new一起调用
—2》私有方法:独立的辅助方法private
—3》final域:与不会被改变,常用于基本数据类型或不可变类的域
—4》静态域和静态方法(static)
**静态域:所有对象共享这个域
**静态常量:static final
**静态方法:1》不能向对象实施操作,所以不能访问实例域,但能访问自身类的静态域
2》没有this参数,直接调用(不要实例)
—5》工厂方法:
例NumberFormat currencyFormatter=NumberFormat.get**();
直接利用类名通过静态方法构造扩充类
四、方法参数
—1》java中都是值传递,对象拷贝,一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)
五、对象构造
—1》重载:同一个方法中的多个构造方法,相同的名字,不同的参数(返回类型不是签名的一部分!)(返回类型不同)
—2》默认初始化:0,false,null(尽量初始化,局部变量必须初始化)
—3》**默认有个无参构造器
*但如果一个类自己提供了构造器,就没有默认无参构造器了
—4》初始化块{}(建议:将初始化块放在域后定义,防重复)
**只要构造类的对象,这些块就会被执行
**注意:首先运行初始化块,然后运行构造器的主体部分
调用构造器的具体处理步骤
–》所有数据初始化为默认值:0,false,null
–》按照类声明出现的顺序,依次执行所有域初始化语句和初始化块
–》如果构造器第一调用了第二个构造器,则执行第二个构造器主体
–》这行这个构造器主体
《静态快和非静态快》
—–静态块在类第一次加载时执行。初始化块在调用构造方法是执行。静态块只执行一次,初始化块可以执行多次。
调用顺序:父类静态,子类静态,父类非静态,父类构造,子类非静态,子类构造
六、对象析构与finalize方法
–1》java有垃圾自动回收机制,所以不支持析构
–2》finalize方法在垃圾回收对象之前调用,由垃圾回收期自行调用
七、类设计技巧
–1》一定要保持数据私有
–2》一定要对数据初始化
–3》不要在类中使用过多的基本类型(共同属性的封装在一个类中)
–4》将职责过多的类进行分解(专人专事)
–5》类名和方法名要体现他们的职责(命名规范)