每个类可以分为两个部分:一个是属性与状态,一个是类的行为;专业点讲就是:域和各种方法(要把构造方法区别对待)
1. 域:
实例变量:用来存储某个类对象的状态值。其修饰符可以是public或private,但不能为static。与对象共存亡。
静态变量:static关键字,保存在类的存储空间的公共存储单元中,和类的各个不同对象没关系。可以通过类名直接访问,或者通过对象来调用。方法使用static变量的时候,必须为静态方法。
最终变量:用修饰符final修饰,赋值一次,在变量生存期内就不会改变。
2.构造方法:
特殊方法。与类同名、无返回值、修饰符总为public。可以有多个
3.方法
a)实例方法:属于每个对象,只能通过类的对象调用。修饰为public或private
b)静态方法:属于整个类,用static修饰。不能操纵和处理属于某个对象的实例变量,即静态方法只能处理静态变量或调用静态方法,不能用关键字this。此外,程序入口方法需加static
还有一种特殊的方法叫访问方法,类中一种可以修改和获取private实例变量的实例方法。一般使用get或set加实例变量名作为该方法的名称。
方法重载:同一个类中,定义方法名称相同但参数不同的多个方法。
关键字:this
对象与对象的比较:①对象相等:相同的内存空间,具有共同的实例变量。②数值相等是指两个同类对象的所有实例变量一一对应相等。
eg:
public class Point
{
private int x;
private int y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
public void setX(int move){
x=x+move;
}
public void setY(int move){
y=y+move;
}
public boolean equals(Point p){
if((x==p.x)&&(y==p.y))
return true;
else
return false;
}
public String toString(){
String s="x坐标是: "+x+"y坐标是:"+y;
return s;
}
}
public class TestPoint{
public static void main(String args[]){
final int move=100;
Point[] points=new Point[3];
points[0]=new Point(100,200);
points[1]=points[0];
points[2]=new Point(200,300);
points[0].setX(move);
points[0].setY(move);
System.out.println("points[0]: "+points[0]);
System.out.println("points[1]: "+points[1]);
System.out.println("points[2]: "+points[2]);
if(points[0]==points[1])
System.out.println("points[0]与points[1]参考相等");
else
System.out.println("points[0]与points[1]参考不相等");
if(points[0]==points[2])
System.out.println("points[0]与points[2]参考相等");
else
System.out.println("points[0]与points[2]参考不相等");
if(points[0].equals(points[2]))
System.out.println("points[0]与points[2]数值相等");
else
System.out.println("points[0]与points[2]数值不相等");
}
}