Java的类中可以包括:实例成员,静态成员
静态成员
类的所有对象在类的范围内共享静态成员(类成员),静态成员(类成员)不属于类中产生的对象,它属于整个类
如,Math类中pow()方法就是一个静态方法,Math.pow(x,y);x^y
静态属性
static修饰符声明的属性成员为静态属性并且唯一对应一个存储位置,静态属性被共享
当某个对象修改了静态属性的值之后,所有对象将使用修改的静态属性值
静态方法
静态方法不操作调用它的对象,不向调用它的对象施加操作的方法,不能用静态方法访问实例属性。通过对象调用静态方法是ok的,类名.方法名
因为不在某个特定对象上操作,引用this是错误的
实例成员
类是一种类型,不是具体的对象,类中定义的实例成员(对象成员)是此类产生的对象都拥有的。
实例属性
没有static属性叫实例属性,每个对象有该类所有实例属性。对象创建时,系统自动给对象创建新的存储位置,每个对象的实例属性存储位置都不相同。修改一个对象的实例属性对其他的对象的实例属性无影响(对比静态属性)
实例方法
在类的给定对象上操作,对象可以作为this访问
应用
静态方法可以访问静态成员变量,不可以访问实例成员变量
实例方法可以访问静态成员变量,也可以访问实例成员变量
public class demo{
static double PI1=3.14;
double PI2=3.14;
double getArea(){//实例方法用静态变量
return PI1*3*3;
}
static double getArea2(){
return PI*3*3;//静态方法调用静态变量
}
double getArea3(){//实例方法用实例变量
return PI2*3*3;
}
static double getArea4(){//静态方法用实例变量
return PI2*3*3;//不能用
}
}
静态成员加法,注意结果
class HasStatic(){
private static int x=100;
public static void main(String args[]){
HasStatic hs1=new HasStatic();
HasStatic hs2=new HasStatic();
hs1.x++;
hs2.X++;
hs1.x++;
System.out.println("x="+x);
}
}
结果x=103
所以两个对象都能修改x的值