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