修飾符(static、final、abstract)第一篇

三個修飾符:

一、static:

作用域:

1. 屬性

1.1 靜態屬性不必要創建新對象,可直接用類調用

1.2 其值發生改變,則類中的值也會隨之而變並延伸到其他對象中

例子:

class Animals {
// /1.static 修飾屬性
static String a = "靜態屬性值";
String b = "非靜態屬性值";
}

Animals  ani=new Animals ();

ani.a="修改";

ani.b="修改非";

Animals  ani1=new Animals ();

ani1.a;//"修改";

ani1.b;// "非靜態屬性值";

1.3 static 不能修飾局部變量屬性值

2. 方法

2.1 訪問是static修飾的方法不必要創建新對象訪問,可直接用類調用

2.2 在static修飾的方法中,只能訪問:

2.2.1 全局變量中定義的static屬性

2.2.2 static方法

2.2.3 其方法中定義的局部變量

2.3 不能使用this關鍵字

2.4 靜態方法的覆寫不能實現不了多態

3.修飾代碼塊

3.1 作用:

提高程序的性能

3.2 使用:

獨立於方法

3.2 特點:

只在類加載時執行一次

可參考


練習代碼君:

package com.jacob.javase;


/*
 * 修飾符:
 *    static詳探
 */
class Animals {
// /1.static 修飾屬性
static String a = "靜態屬性值";
String b = "非靜態屬性值";


public Animals() {
// Illegal modifier for parameter a1; only final is permitted
// 1.1、static String a1="";原因static不能修飾局部變量
}


// 2.static 修飾方法
public static void eat() {
// Cannot use this in a static context
// 2.1、this.a;//靜態方法中不能使用this關鍵字
// int b=0;//方法中局部變量的值可訪問
// 2.2、靜態方法中只能調用靜態方法(具體可參考main方法)
System.out.println("Animals靜態方法");
// 2.3、靜態方法中只能訪問類全局中的靜態屬性
// System.out.println(b);
}


// 靜態代碼塊:1.在類加載時實現一次 2.使用起來是獨立於方法 3.提高程序的性能
static {
System.out.println("靜態代碼塊");
}


}


class Cat extends Animals {
// 2.4、 靜態方法不能實現多態
public static void eat() {
System.out.println("cat靜態方法");
}
}


public class ModifierStatic {
public static void main(String[] args) {
Animals ani = new Animals();
ani.a = "修改後的靜態屬性值";
ani.b = "修改後的非靜態屬性值";
Animals ani1 = new Animals();
// 1.2、說明對象對類靜態屬性(類變量)值的改變,其類中值會相應改變(因爲靜態存儲在靜態數據區,可直接調用)
System.out.println("ani1中的a:" + ani1.a + " || " + "ani1中的b:" + ani1.b);
// 1.3、靜態屬性值可不必創建對象,直接用類調用,原因同上
System.out.println("Animals中的a:" + Animals.a);
Animals a2 = new Cat();
a2.eat();// ——Animals靜態方法
Animals.eat();// —— Animals靜態方法(靜態方法同樣可以用類直接調用)
}
}












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章