Java 作用域修饰符
Java作用域修飾符
在java語言中,可以使用訪問修飾符來規定對類、變量、方法和構造方法的訪問。
文章目錄
- 一、訪問修飾符
- 二、非訪問修飾符
一、訪問修飾符
1.私有的訪問修飾符private:
聲明為私有訪問類型的變量只能通過類中的公共方法被外部類訪問。
被聲明為private的方法、變量和構造方法,只能被所屬類訪問,并且類和接口不能被聲明為private。
public class PrivateTest{private String name;//私有成員變量public String getName(){return name;}public void setName(String name){this.name = name;}//下面說明了:聲明為私有訪問類型的變量只能通過類中的公共方法被外部類訪問。public static void main(String[] args){PrivateTest p = new PrivateText();//創建類的對象p.setName("private訪問修飾符");//調用對象的set方法,為私有成員變量name賦值。System.out.println("name = " + p.getname());} }2.無訪問修飾符:
不使用訪問修飾符聲明的變量和方法,可以被這個類本身或者與類在同一個包內的其他類訪問。
接口中變量隱式聲明為 public stastic final。
接口中的方法默認訪問權限為 public。
public class PrivateTest{String name;//默認訪問修飾符的成員變量String getName(){return name;}void setName(String name){this.name = name;}public static void main(String[] args){DefaultTest d = new DefaultText();d.setName("default test");System.out.println("name = " + d.getname());} }3.受保護的訪問修飾符protected
protected修飾符不能修飾類和接口,方法和成員變量能夠聲明為protected。接口的成員變量和方法不能聲明為protected。
可以被這個類本身、與類在同一個包內的其他類、不同包中的子類訪問。
package create; public class Person{ //父類protected String name; protected void sing(){ System.out.println("父類");} }package child; //與父類不在一個包中 import create.Person; //引入父類 public class Women extends Person{ //繼承父類的子類public static void main(string[] args){Women w = new women();w.sing(); //調用子類在父類中繼承的方法w.name = "protected"; //可見不同包中的子類可以訪問protected修飾的變量。System.out.println(w.name);} }4.公有的訪問修飾符public
被聲明為public的類、方法、構造方法和接口能夠被任何其他類訪問。
幾個相互訪問的public類分布在不同的包中,則需要用import導入相應public類所在的包。
類所有的公有方法和變量都能被其子類繼承。
package create; public class Person{public void test(){System.out.println("父類:public test");} }package child; import creat.Person; public class PublicTest{//兩個類之間沒有繼承關系public static void main(String[] args){Person p = new Person();p.test();//調用person類中public方法。} }二、非訪問修飾符
1.static修飾符
static修飾符用來修飾類的成員變量和成員方法,也可以形成靜態代碼塊。
static修飾的成員變量和成員方法也成為靜態變量、靜態方法,可以直接通過類名訪問他們。
靜態變量也稱為類變量,局部變量不能被聲明成static變量。
無論一個類實例化多少個對象,它的靜態變量就只有一份,靜態變量獨立于該類的任何對象。
JVM加載類時,就會執行靜態代碼塊。
package create; public class StaticTest{public static final String BANANA = "香蕉";//用static和final修飾的成員變量一旦初始化,其值就不能修改,它的名字建議用大寫字母。public static float price = 5.2f;static{//JVM在加載類時會執行這些靜態代碼塊,每個代碼塊只會被執行一次。System.out.println("static 靜態塊");}public static void test(){//靜態方法只能訪問所屬類的靜態成員變量和靜態成員方法。System.out.println(StaticTest.BANANA + "的價格是:" + StaticTest.price);}public static void main(String[] args){StaticTest st = new StaticTest();st.test();System.out.println("main()中," + st.BANANA + "的價格 = " + st.price);//通過對象st調用類的靜態成員變量和常量。} }2.final修飾符:
final可以修飾類、方法、變量。
final可以修飾類中的變量,分別是靜態變量、成員變量、局部變量。
變量初始化可以在定義時初始化,也可以在構造方法中賦初值。final修飾的成員變量表示常量,值一旦給定就無法改變。
一個類不允許其子類覆蓋某個方法,可以把這個方法聲明為final方法。
final聲明的類不能被繼承。
/* 如下:編譯報錯: 錯誤:無法為最終變量f分配值 錯誤:Son中的work()無法覆蓋Father中的work(),被覆蓋的方法為final*/ public class Father{final int f = 9;//值一旦給定就無法改變final void work(){//final定義的成員方法不能被重寫System.out.println("上班");} } public class Son extends Father{public static void main(String[] args){Son s = new son();s.f = 12;//錯誤System.out.println(s,f);} void work(){//錯誤} }總結
以上是生活随笔為你收集整理的Java 作用域修饰符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pta7-3 统计不及格人数_应用统计专
- 下一篇: 创建数组表格PHP苹果价格,如何从PHP