类一般是由构造器和方法组成的
先看一个employee类的构造器
public Empolyee(String n,double s){
name =n;
sqlary=s;
}
在构造Emplyee类的对象时,构造器会运行,以便将实例域初始化为希望的状态
例如
newEmplyee("JamesBond",100000);
会把实例域设置为:
name="JamesBond";
salary=100000;
构造器与其他方法有一个重要的不同,构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的
这样就是错误的了 james.Empoyee("JamesBond",100000);
必须要记住的是:
构造器与类同名
每个类可以有一个以上的构造器
构造器可以有0,1或多个参数
构造器没有返回值
构造器总是伴随着new操作一起调用
publicString getName(){
returnname;
}
这就是一个典型的访问器方法,在有些时候,需要获取或设置实例域的值,要提供三种:
一个私有的数据域,
一个共偶遇的域访问器方法,
一个公有的域更改器方法,
细心一点的话我们在SSH学习的时候,就遇到了这个问题,老师讲解的时候用的private之后对其进行set,get方法,这就跟我们这里的内容比较符合了
类的方法有私有的公有的,私有的方法只是public变成了private,私有的不会被外部调用,我们可以对其删除,但是如果是公有的额,我们就不能把它删除,因为很有可能会被其他的依赖
我们可以吧实例域定为final。构建对象时必须初始化这样的域,这个域的值被设置,并且在后面的操作中,不能在对他进行修改,所以他也不会有set的方法了
如果把域定义为static,每个类中只有一个这样的域。
classEmployee{
privatestatic int nextID=1;
privateint id;
}
每一个雇佣者都有一个自己的id域,但这个类的所有实例将共享一个nextid,换句话说,就是有100个Employee类的对象,就有100个id,但是其只有一个nextid,即使没有一个对象,静态域nextid也存在,它属于类,不属于任何独立的对象
静态变量使用的比较少,但是静态常量使用的比较多例如
publicclass Math{
publicstatic final double PI=3.1415926
}
在程序中就可以采用Math.Pi的形式获得这个常量。
如果关键字static被省略,PI就变成了Math类的一个实例域。需要通过Math类的对象访问PI,并且每一个Math对象都有他自己的一份拷贝的PI这就会造成资源浪费,常见的Systme,out在System类中声明:
有静态的常量,还有静态方法,静态方法是一种不能向对象实施操作的方法,静态方法只能访问自身类中的静态域
在两种情况下我们使用静态方法:
一个方法不需要访问对象状态,其所需参数都是通过显示参数提供
一个方法只需要访问类的静态域
Main方法也是一个静态的方法,不需要使用对象调用静态方法。main方法不对任何对象进行操作,事实上在启动程序时还没有任何一个对象,静态的面方法将执行并创建程序所需要的对象