public class Car {
//实例属性,其属于对象,每个对象都有一份独立的拷贝,用来保存这个对象个性化的特征。
String brand;
Integer price;
//静态属性属于类本身,属于模具,只要类被加载了,该属性的空间就会被开辟,而这个时候,对象还没有构建。
//静态属性属于类,只有一份拷贝,为这个类所有的实例所共享,该属性开辟在静态区中。
static int count;
public Car(){
System.out.println("car constructor is invoked!");
count++;
}
void run(){
System.out.println("一辆售价为"+this.price+"的"+this.brand+"品牌的汽车在奔驰!");
}
//实例方法能够调用静态属性,因为实例方法只能实例存在的时候才能调用,而这个时候,类已经被加载了,静态变量空间早就开辟了。
//所有实例方法是可以访问静态属性的。
//实例方法只能通过引用变量来调用。
void test(){
Car.count=Car.count+2; //实例方法可以访问静态变量,因为实例方法调用的时候,对象已经有了,类早就加载了。
Car.showInfo(); //实例方法可以访问静态方法 //推论:实例方法可能访问任何静态的数据,比如静态属性和方法。
//静态方法或者属性访问的时候,为了提高效率,避免代码阅读上的误解,建议直接用类名来访问。
}
//静态方法属于类本身,只要类被加载,该方法就能调用了,而不需要实例的存在。
static void showInfo(){
System.out.println("static method is invoked now!");
// price =100000; //静态方法不能访问实例变量,因为静态方法能够被调用的时候,对象可能还没构建,不会拥有实例属性。
//run(); //静态方法不能访问实例方法,原因同上,因为实例方法只有对象才能调用。
//推论: 静态方法不能访问任何实例存在才能够进行的操作,比如实例属性和方法。
}
}
静态属性和方法理解
于 2016-04-04 15:32:51 首次发布