日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础--访问权限控制符

發(fā)布時間:2023/11/30 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础--访问权限控制符 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天我們來探討一下訪問權(quán)限控制符。

使用場景一:攻城獅A編寫了ClassA,但是他不想所有的攻城獅都可以使用該類,應(yīng)該怎么辦?

使用場景二:攻城獅A編寫了ClassA,里面有func1方法和func2方法,但是他只想提供func1給別的攻城獅使用,應(yīng)該怎么辦?

?

此時,應(yīng)該使用Java當中的訪問權(quán)限控制符:1、默認訪問權(quán)限 2、public 3、private 4、protected

注意,上述四種訪問權(quán)限,只有默認訪問權(quán)限和public能夠用來修飾類。修飾類的變量和方法四種權(quán)限都可以。(本處所說的類針對的是外部類,不包括內(nèi)部類)

?

1、修飾類

默認訪問權(quán)限:表示在同一包中其他類都可以訪問該類。

public:表示任何一個類都可以訪問該類。

例子1:

People.java

package test1;class People { //默認訪問控制符 String name;public People(String name) {this.name = name;}public String getName(){return this.name;} }

Main.java

package test1;public class Main {public static void main(String[] args) {People p = new People("攻城獅");System.out.println(p.getName());}}

實驗結(jié)果:

?

可以正常輸出結(jié)果[攻城獅]。因為People類使用的是默認訪問修飾符,在同一個包里面可以訪問,而Main.java與People.java在同一包,所以能訪問。

?

?

?例子2:

修改Main.java:把Main類放置在別的包中,會有什么情況出現(xiàn)呢?

line2提示:People類不可見,即找不到的意思。People.java使用默認訪問修飾符,只能提供給同包的類來訪問,而現(xiàn)在Main.java放在了test2包中,而People.java是test1包的,所以在不同包是不能放到默認訪問修飾符類的。

?

2、修飾類的方法和變量

默認訪問權(quán)限(包訪問權(quán)限):如果類的變量和方法使用默認訪問權(quán)限,就意味著只能在同包的類中可以訪問到類的方法和變量,而不同包的類則不能訪問類的方法和變量。

private:如果一個類的方法和變量使用privagte來修飾,則只能提供給本類訪問,其他類不能訪問。

protected:如果一個類的方法和變量使用protected來修飾,既能提供本類訪問,又能提供給不同包繼承于此類的類訪問方法和變量。

public:如果一個類的方法和變量使用public來修飾,則任意類能訪問方法和變量。

?

下面通過一下例子來說明問題:

例子3:

People.java與Main.java位于同類

People.java

package test1;class People { //默認訪問控制符 String name;public People(String name) {this.name = name;}String getName(){//默認訪問控制符return this.name;} }

Main.java

package test1;public class Main {public static void main(String[] args) {People p = new People("攻城獅");System.out.println(p.getName());}}

此例子能正常運行,主要想測試一下默認修飾符修飾getName(),在同包的類中能正常訪問。

?

如果此時,把Main.java放于不同的包中,查看能否正常運行?

People.java

package test1;class People { //默認訪問控制符 String name;public People(String name) {this.name = name;}String getName(){//默認訪問控制符return this.name;} }

Main.java

提示,在不同包中,是查看不了使用默認訪問控制符修飾的方法。

?

例子4:

People.java

package test1;public class People {String name;public People(String name) {this.name = name;}protected String getName(){//protected控制符return this.name;} }

Main.java

提示,在不同包中,是查看不了使protected控制符修飾的方法。

?

編寫一個Man類繼承于People類

Man.java

package test2;import test1.People;public class Man extends People {public Man(String name) {super(name);}public void printName(){System.out.println(this.getName());}}

Main.java

package test2; import test1.People;public class Main {public static void main(String[] args) {//People p = new People("攻城獅");//System.out.println(p.getName()); Man m = new Man("工程濕");m.printName();}}

Man類繼承于People類,則Man類中可以訪問到People類中protected修飾的方法。

?

轉(zhuǎn)載于:https://www.cnblogs.com/xuyuanjia/p/5574801.html

總結(jié)

以上是生活随笔為你收集整理的Java基础--访问权限控制符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。