Static关键字

Posted dododo70

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 + "
" +
        "price = " + this.price + "
" +
        "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 + "
" +
        "price = " + this.price + "
" +
        "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 方法必须要先实例化对象

以上是关于Static关键字的主要内容,如果未能解决你的问题,请参考以下文章

面向对象基础——static关键字和代码块的使用

代码片段 navbar

static关键字,代码块,abstract关键字,interface,内部类,异常处理

static关键字静态代码块

Java——static关键字

static关键字