歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 淺談Static關鍵字

淺談Static關鍵字

日期:2017/3/1 9:06:48   编辑:Linux編程

1.使用static關鍵字聲明的屬性為全局屬性

  未使用static關鍵字指定city之前,如果需要將Tom,Jack,Mary三人的城市均改成Beijing,需要再次聲明三次對象的city為Beijing

 1 package packageone;
 2 class People{
 3     String name;
 4     String city  = "Shanghai";
 5     public People(String name) {
 6         this.name = name;
 7     }
 8     public void showInfo() {
 9         System.out.println("姓名:"+name+","+"城市:"+city);
10     }
11 }
12 public class StaticDemo {
13 
14     public static void main(String[] args) {
15         People p1 = new People("Tom");
16         p1.city = "Beijing";
17         p1.showInfo();
18         People p2 = new People("Jack");
19         p2.city = "Beijing";
20         p2.showInfo();
21         People p3 = new People("Mary");
22         //未聲明p3對象的city屬性為Beijing,則其city仍為Shanghai。
23         p3.showInfo();
24     }
25 }

使用static關鍵字指定city後,只需設置city = “Beijing”一次,即可實現三個人城市的更改

 1 package packageone;
 2 class People{
 3     String name;
 4     static String city  = "Shanghai";
 5     public People(String name) {
 6         this.name = name;
 7     }
 8     public void showInfo() {
 9         System.out.println("姓名:"+name+","+"城市:"+city);
10     }
11 }
12 public class StaticDemo {
13 
14     public static void main(String[] args) {
15         People p1 = new People("Tom");
16         p1.city = "Beijing";
17         p1.showInfo();
18         People p2 = new People("Jack");
19         p2.showInfo();
20         People p3 = new People("Mary");
21         //未聲明p3對象的city屬性為Beijing,但其city變為Beijing。
22         p3.showInfo();
23     }
24 }

2.使用static關鍵字聲明的屬性和方法可直接通過類名來調用(代碼作為對該static應用的解釋有點復雜了,同時是接口的簡單使用)

 1 package packageone;
 2 
 3 interface USB {
 4     void start();
 5     void stop();
 6 }
 7 
 8 class C {
 9     public static void work(USB u) {
10         u.start();
11         System.out.println("工作中");
12         u.stop();
13     }
14 }
15 
16 class USBDisk implements USB {
17     @Override
18     public void start() {
19         System.out.println("U盤開始工作");
20     }
21 
22     @Override
23     public void stop() {
24         System.out.println("U盤停止工作");
25     }
26 }
27 
28 class Printer implements USB {
29     @Override
30     public void start() {
31         System.out.println("打印機開始工作");
32     }
33 
34     @Override
35     public void stop() {
36         System.out.println("打印機停止工作");
37     }
38 }
39 
40 public class interfacetest {
41     public static void main(String[] args) {
42         //直接通過類名來調用work方法
43         C.work(new USBDisk());
44         C.work(new Printer());
45     }
46 
47 }

3.注意:】使用static方法的時候,只能訪問static聲明的屬性和方法,而非static聲明的屬性和方法是不能訪問的。而非static聲明的方法是可以去調用static聲明的屬性或方法

 1 package packageone;
 2 //由於博主我水平有限參考了別人的代碼案例,但由於他的代碼有較大錯誤,經調試成功後援引,算是自己的代碼了吧~嘿嘿
 3 class People {
 4     private String name;
 5     private int age;
 6 
 7     public String getName() {
 8         return name;
 9     }
10 
11     public void setName(String name) {
12         this.name = name;
13     }
14 
15     public int getAge() {
16         return age;
17     }
18 
19     public void setAge(int age) {
20         this.age = age;
21     }
22 
23     // 使用static定義country屬性
24     private static String country = "China";
25 
26     // 定義static方法,修改static屬性
27     public static void setCountry(String c) {
28         country = c;
29     }
30 
31     // 取得static屬性
32     public static String getCountry() {
33         return country;
34     }
35 
36     // 通過構造方法為屬性賦值(初始化操作)
37     public People(String name, int age) {
38         this.name = name;
39         this.age = age;
40     }
41 
42     public void info() {
43         System.out.println("姓名:"+ getName()+"年齡:"+getAge()+"城市:"+country);
44     }
45 }
46 
47 public class StaticDemo {
48     public static void main(String args[]) {
49         People per1 = new People("張三", 20);
50         People per2 = new People("李四", 21);
51         People per3 = new People("王五", 23);
52         System.out.println("--------- 修改前-----------");
53         per1.info();
54         per2.info();
55         per3.info();
56         System.out.println("--------- 修改後-----------");
57         // 直接使用類名稱調用方法來修改static屬性的內容,正是因為country為static全局變量,才不需要每個人都去修改國籍
58         People.setCountry("USA");
59         per1.info();
60         per2.info();
61         per3.info();
62     }
63 }

Copyright © Linux教程網 All Rights Reserved