4.3 用户自定义类
4.3.1 类数组的声明
需要两次new
Employee[]=staff=new Employedd[3];
staff[0]=new Employedd(参数列表);
staff[1]=new Employedd(参数列表);
staff[2]=new Employedd(参数列表);
4.3.2 封装的注意
不要直接一个retrun一个类,应该先clone
public Date getHireDay()
{
return hireDay; //这是错误的,只是浅复制而已;
}
public Date getHireDay()
{
return hireDay.clone();
}
4.3.3
类的实例能调用其他同一个类实例的私有属性
4.3.4 final实例域
private final String name
必须在构造函数中,设置他的值,并且不能更改
final大多应用于基本类型域和不可变域
对于类似Date这种变量 final修饰只是让这个变量不能指向其他区域,但是能够更改值
Date就是一个可变域
4.4 静态域与静态方法
4.4.1 静态域
静态域属于类,不属于实例
所有类的实例共用一个静态域,即使没有实例也能调用
4.4.2 静态常量
PI,和System.IO都是静态常量
4.4.3 静态方法
不依赖实例的方法,如Math.pow()
不能访问实例域,只能访问静态域
4.4.4 工厂方法
4.5 方法参数
类实例当参数时,参数会指向同一块内存。所以修改参数的时候,等于修改实例。
如果想不被修改,可以clone
4.6对象构造
4.6.1 初始化,静态方法
private static int nextId;
private int id=assignId()
private static int assignId()
{
int r=nextId;
nextId++;
return r;
}
4.6.2 调用另一个构造函数
Java中独有,可以让Employee(double)构造器将调用Employee(String,double)
public Employee(double s)
{
this("Employee #"+nextId,s);// Employedd(String,double)
nextId++;
}
4.7 包
4.7.2 静态导入
import语句不仅可以导入类,还增加了导入静态方法和静态域的功能
import static java.lang.System.*;
out.printf("Hello World");//System.out
exit(0); //System.exit
4.7.3 将类放入包中
package com.horstmann.corejava;
以后具体学习