Static关键字

static 定义属性:

1. static 定义后的属性,相当于该类的所有对象的公共属性,如果某个对象对这个属性进行修改,将会波及其他的对象

2. static 定义的属性可由类名称直接调用

3. 非 static 定义的属性需要实例化对象之后才能访问,而 static 属性不受实例化对象的控制,在没有实例化对象产生的时候,也是可以使用的(类名.属性)

 

public class Demo{
    public static void main(String args[]){
        Book bk1 = new Book("Java入门到放弃",58.98);
        Book bk2 = new Book("CSS禅意花园",79.99);
        //改变bk2的pub属性
        bk2.pub = "北京大学出版社";
        System.out.println(bk1.getInfo());
        System.out.println(bk2.getInfo());
    }
}



class Book{
    private String title;
    private double price;
    
    //定义一个出版社属性
    String pub = "清华大学出版社";
    
    public Book(){}
    public Book(String title, double price){
        this.title = title;
        this.price = price;
    }
    
    public void setTitle(String title){
        this.title = title;
    }
    public void setPrice(double price){
        this.price = price;
    }
    public String getTitle(){
        return this.title;
    }
    public double getPrice(){
        return this.price;
    }
    
    public String getInfo(){
        return
        "title = " + this.title + "\n" +
        "price = " + this.price + "\n" +
        "publish = " + this.pub;
    }
}
/*-----------------------------------------
E:\Javacode>java Demo
title = Java入门到放弃
price = 58.98
publish = 清华大学出版社
title = CSS禅意花园
price = 79.99
publish = 北京大学出版社

E:\Javacode>*/

以上的代码将 String pub = "清华大学出版社" 前面加上 static 属性,则 pub 属性将会变成该类实例化的对象们所共有的属性,如果一个对象对这个 pub 属性进行操作,那么其他的对象的 pub 属性也会发生相应的改变

public class Demo{
    public static void main(String args[]){
        Book bk1 = new Book("Java入门到放弃",58.98);
        Book bk2 = new Book("CSS禅意花园",79.99);
        //改变bk2的pub属性
        bk2.pub = "北京大学出版社";
        System.out.println(bk1.getInfo());
        System.out.println(bk2.getInfo());
    }
}



class Book{
    private String title;
    private double price;
    
    //定义一个出版社属性
    static String pub = "清华大学出版社";
    
    public Book(){}
    public Book(String title, double price){
        this.title = title;
        this.price = price;
    }
    
    public void setTitle(String title){
        this.title = title;
    }
    public void setPrice(double price){
        this.price = price;
    }
    public String getTitle(){
        return this.title;
    }
    public double getPrice(){
        return this.price;
    }
    
    public String getInfo(){
        return
        "title = " + this.title + "\n" +
        "price = " + this.price + "\n" +
        "publish = " + this.pub;
    }
}
/*-----------------------------------------
E:\Javacode>java Demo
title = Java入门到放弃
price = 58.98
publish = 北京大学出版社
title = CSS禅意花园
price = 79.99
publish = 北京大学出版社

E:\Javacode>*/

 

static 定义方法:

1. static 定义的属性和方法都不受实例化对象的控制,都属于独立类的功能

2. static 方法不能直接访问非 static 属性或者方法,只能调用 static 属性和方法

3. 非 static 方法可以访问 static 的属性或方法, 要调用非 static 方法必须要先实例化对象

posted @ 2019-02-18 18:20  眉毛病  阅读(165)  评论(0编辑  收藏  举报