4.2 使用预定义类
4.2.3更改器方法与访问器方法
1.
更改器方法:对实例域做出修改的方法 set方法
访问器方法:仅访问而不修改 get方法
一般加上前缀,如
Date time=calendar.getTime()
calender setTime(time)
4.3用户自定义类
1.设计主力类(workhorse class) 没有main方法,但是有自己的实例域和实例方法
2.在一个源文件中
只能有一个公有类(public访问修饰符,包含main方法,文件名必须与public类的名字匹配)
public class EmployeeTest{
public static void main(String[] args){
}
}
但可以有任意数目非公有类(没有main方法,但是有自己的实例域和实例方法)。
class ClassName{
field1
field2
...
constructor1
constructor2
...
method1
method2
...
}
注意用public 还是 private修饰
4.构造器
public Employee(String n ,double s, int year ,int month, int day){
name=n;
salary=s;
GregorianCalendar calendar= new GregorianCalenda(year, month-1, day);
hireDay = calendar.getTime();
}
注意:
构造器与类同名
每个类可以有多个构造器
构造器可以有多个参数
构造器没有返回值
构造器总是伴随着new操作使用
5.封装
4.4静态域和静态方法
静态域、静态方法(用static修饰)伴随着类一直存在。静态方法通过类名调用。调用静态方法不需要创建实例(这也是main是静态方法的原因)。
1、静态域
private static int nextId=1
静态域只属于他所属的类,不属于任何实例对象。这个类所有实例将共享一个nextId
2.静态常量
public class Math{
...
public static final double PI=3.1415926;
...
}
此时为静态常量,可以直接用 Math.PI 调用这个常量
如果关键字static被省略,
public class Math{
...
public final double PI=3.1415926;
...
}
PI就变成了实例域,需要通过Math类的对象访问PI,并且每个对象会产生一个拷贝
3.静态方法
如Math,pow(x,a)
运算时不需要使用Math对象,并且静态方法也不能操作对象,所以不能访问实例域,但是可以访问自己类中的静态域(如return nextId)
4.final 实例域
(1)final修饰后,构造器执行后,域的值被设置并且之后 不能再被修改
(2)final修饰基本类型域,或不可变类型域
如private final String name
;
String就是不可变的类。
若修饰可变的类,后续过程会出现错误!
4.5 方法参数
1.方法参数两种类型
基本数据类型:方法不能修改基本数据类型的引用,而是x被初始化为一个拷贝,更改的事拷贝的值
对象引用:
Java中方法参数的总结(Java中都是值传递,而不是引用传递):
一个方法不能修改一个基本数据类型的参数(数值型或布尔型)
一个方法可以改变一个对象参数的状态
一个方法不能让对象参数引用一个新的对象(Java中值传递的体现)
4.6对象构造
1.
重载
重载解析
签名
2.初始化数据域
(1)构造器中设置值
public Hero(){
hp = 100; //构造方法中初始化
}
(2)在声明中设置值
public String name = "some hero"
(3)初始化块
{
maxHP = 200; //初始化块
}
4.7 包
包作用域
private:只能被定义他们的类使用!