您的位置:首页 > 编程语言 > Java开发

静态属性和方法理解

2016-04-04 15:32 267 查看
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(); //静态方法不能访问实例方法,原因同上,因为实例方法只有对象才能调用。

       //推论: 静态方法不能访问任何实例存在才能够进行的操作,比如实例属性和方法。

    }

    

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java