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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java变量访问权限_JAVA成员变量的访问权限

發(fā)布時(shí)間:2024/10/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java变量访问权限_JAVA成员变量的访问权限 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

成員變量的訪問(wèn)權(quán)限

我看到很多地方談到關(guān)于Java里變量的訪問(wèn)權(quán)限問(wèn)題.

很多地方認(rèn)為對(duì)于默認(rèn)修飾符的理解是這樣的:

不寫時(shí)默認(rèn)為friendly

但就我所知Java里沒(méi)有 friendly這一關(guān)鍵字.

當(dāng)然學(xué)過(guò)C++的人都知道,在C++里有 friendly,而且其訪問(wèn)權(quán)限和Java里不寫時(shí)默認(rèn)情況一樣.

我覺(jué)的可以這樣理解,但不能這么認(rèn)為.C++和Java畢竟是兩種不同的語(yǔ)言,許多規(guī)則是不同的.

如果我說(shuō)的有哪里不正確,請(qǐng)大家改正,謝謝.

訪問(wèn)權(quán)限修飾符聲明了成員變量的訪問(wèn)權(quán)限。Java提供的顯示的訪問(wèn)權(quán)限修飾符有3種,分別是:私有(private)、保護(hù)(protected)和公 共(public)。除此之外,還有一種默認(rèn)的訪問(wèn)權(quán)限:friendly,它并不是Java的關(guān)鍵字,只有當(dāng)變量前面沒(méi)有寫明任何訪問(wèn)權(quán)限修飾符時(shí),就 默認(rèn)以friendly作為訪問(wèn)權(quán)限。為了表達(dá)上的方便,省略了其中"成員"兩字,將被這些修飾符所修飾的變量分別稱為私有變量、保護(hù)變量和公共變量。下 面分別討論各個(gè)修飾符的用法。

1.公共變量

凡是被public修飾的成員變量,都稱為公共變量,它可以被任何類所訪問(wèn)。即允許該變量所屬的類中所有方法訪問(wèn),也允許其他類在外部訪問(wèn)。

公共變量使用示例。

public class declarePublic{

public int publicVar=10; //定義一個(gè)公共變量

}

在類declarePublic中聲明了一個(gè)公共變量publicVar,它可以被任何類所訪問(wèn)。下面這段程序中,類otherClass可以合法地修改變量publicVar的值,而無(wú)論otherClass位于什么地方。

public class otherClass{

void change(){

declarePublic ca=new declarePublic(); //創(chuàng)建一個(gè)declarePublic對(duì)象

ca.publicVar=20; //通過(guò)對(duì)象名來(lái)訪問(wèn)它的公共變量,正確

}

}

用public修飾的變量,允許任何類在外部直接訪問(wèn),這破壞了封裝的原則,造成數(shù)據(jù)安全性能下降,所以除非有特別的需要,否則不要使用這種方案。

2.私有變量凡是被private修飾的成員變量,都稱為私有變量。它只允許在本類的內(nèi)部訪問(wèn),任何外部類都不能訪問(wèn)它。

私有變量使用示例。

public class declarePrivate{

private int privateVar=10; //定義一個(gè)私有變量

void change(){

privateVar=20; //在本類中訪問(wèn)私有變量,合法

}

}

如果企圖在類的外部訪問(wèn)私有變量,編譯器將會(huì)報(bào)錯(cuò)。

public class otherClass{

void change(){

declarePrivate ca=new declarePrivate(); //創(chuàng)建一個(gè)declarePrivate對(duì)象

ca.privateVar=20; //企圖訪問(wèn)私有變量,非法

}

}

為了讓外部用戶能夠訪問(wèn)某些私有變量,通常類的設(shè)計(jì)者會(huì)提供一些方法給外部調(diào)用,這些方法被稱為訪問(wèn)接口。下面是一個(gè)改寫過(guò)的declarePrivate類。

public class declarePrivate{

private int privateVar=10; //定義一個(gè)私有變量

void change(){

privateVar=20;

}

public int getPrivateVar(){ //定義一個(gè)接口,返回私有變量privateVar的值

return privateVar;

}

public boolean setPrivateVar(int value){ //定義一個(gè)接口,可以設(shè)置privateVar

的值

//可以在這里先檢測(cè)value是否在允許的范圍內(nèi),然后再執(zhí)行下面的語(yǔ)句。

privateVar = value;

return true;

}

}

私有變量很好地貫徹了封裝原則,所有的私有變量都只能通過(guò)程序員設(shè)計(jì)的接口來(lái)訪問(wèn),任何外部使用者都無(wú)法直接訪問(wèn)它,所以具有很高的安全性。但是,在下面這兩種情況下,需要使用Java另外提供的兩種訪問(wèn)類型:

通過(guò)接口訪問(wèn)私有變量,將降低程序的性能,在程序性能比較重要的情況下,需要在安全性和效率間取得一個(gè)平衡。

私有變量無(wú)法被子類繼承,當(dāng)子類必須繼承成員變量時(shí),需要使用其他的訪問(wèn)類型。

3.保護(hù)變量

凡是被protected修飾的變量,都被稱為保護(hù)變量。除了允許在本類的內(nèi)部訪問(wèn)之外,還允許它的子類以及同一個(gè)包中的其他類訪問(wèn)。子類是指從該類派生出來(lái)的類。包是Java中用于管理類的一種松散的集合。二者的詳細(xì)情況將在第4章介紹。下面是一個(gè)簡(jiǎn)單的例子。

保護(hù)變量使用示例。

下面這個(gè)程序先定義一個(gè)名為onlyDemo的包,declarProtected類就屬于這個(gè)包。

public class declareProtected{

protected int protectedVar=10; //定義一個(gè)保護(hù)變量

void change(){

protectedVar=20; //合法

}

}

說(shuō)明:讀者編譯這個(gè)文件時(shí),需要用這個(gè)命令(下同):

javac -d . 文件名

下面這個(gè)otherClass類也定義在onlyDemo包中,與declareProtected類同屬于一個(gè)包。

public class otherClass{ //它也在包onlyDemo中

void change(){

declareProtected ca=new declareProtected();

ca.protectedVar=20; //合法

}

}

下面這個(gè)deriveClass類是declareProtected的子類,它并不在onlyDemo包中。它也可以訪問(wèn)保護(hù)變量protectedVar,但是只能通過(guò)繼承的方式訪問(wèn)。

import onlyDemo.declareProtected; //引入需要的包

public class deriveClass extends declareProtected{ //定義一個(gè)子類

void change(){

//合法,改變的是deriveClass從declarProtected中所繼承的protectedVar值

protectedVar=30;

}

}

說(shuō)明:import是Java中的關(guān)鍵字,用于引入某個(gè)包。這將在4.13節(jié)中詳細(xì)介紹。

子類如果不在父類的同一包中,是無(wú)法通過(guò)"對(duì)象名.變量名"的方式來(lái)訪問(wèn)protected類型的成員變量,比如下面這種訪問(wèn)是非法的:

import onlyDemo.declareProtected;

public class deriveClass extends declareProtected{ //定義一個(gè)子類

void change(){

declareProtected ca=new declareProtected();

ca.protectedVar=30; //錯(cuò)誤,不允許訪問(wèn)不在同一包中的保護(hù)變量

}

}

4.默認(rèn)訪問(wèn)變量

如果在變量前不加任何訪問(wèn)權(quán)修飾符,它就具有默認(rèn)的訪問(wèn)控制特性,也稱為friendly變量。它和保護(hù)變量非常像,它只允許在同一個(gè)包中的其他類訪問(wèn), 即便是子類,如果和父類不在同一包中,也不能繼承默認(rèn)變量(這是默認(rèn)訪問(wèn)變量和保護(hù)變量的唯一區(qū)別)。因?yàn)樗薅嗽L問(wèn)權(quán)限只能在包中,所以也有人稱默認(rèn) 訪問(wèn)權(quán)限為包訪問(wèn)權(quán)限。

默認(rèn)訪問(wèn)變量使用示例。

package onlyDemo; //本類定義在包中

public class declareDefault{

int defaultVar=10; //定義一個(gè)默認(rèn)訪問(wèn)變量

void change(){

defaultVar=20; //合法

}

}

onlyDemo包中的其他類,可以訪問(wèn)defaultVar變量:

package onlyDemo;

public class otherClass{ //它也在包onlyDemo中

void change(){

declareDefault ca=new declareDefault();

ca.defaultVar=20; //合法

}

}

下面是它的子類,也在onlyDemo包中。它除了可以像包中其他類那樣通過(guò)"對(duì)象名.變量名"來(lái)訪問(wèn)默認(rèn)變量,還可以通過(guò)繼承的方式來(lái)訪問(wèn)。

package onlyDemo;

public class deriveClass extends declareDefault{ //定義一個(gè)子類

void change(){

//合法,改變的是deriveClass從declarDefault中所繼承的defaultVar值

defaultVar=30;

}

}

如果子類不在onlyDemo包中,就不會(huì)繼承默認(rèn)變量,也就無(wú)法像上面那樣來(lái)訪問(wèn)。

import onlyDemo.declareDefault;

public class deriveClass extends declareDefault{ //定義一個(gè)子類

void change(){

defaultVar=30; //非法,這個(gè)變量沒(méi)有繼承下來(lái)

}

}

總結(jié)

以上是生活随笔為你收集整理的java变量访问权限_JAVA成员变量的访问权限的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

主站蜘蛛池模板: 欧美三日本三级少妇三99 | 魔女鞋交玉足榨精调教 | 亚洲精品ww| 日韩精品――色哟哟 | 激情内射人妻1区2区3区 | 国产欧美日韩综合精品一区二区三区 | 午夜免费福利在线 | 亚洲精品综合久久 | 色av资源 | 精品女同一区二区三区 | 免费的毛片网站 | 久久国产亚洲精品无码 | 在线看黄的网站 | 国产欧美久久一区二区三区 | 福利视频一二区 | 四虎影院在线 | 色悠久久综合 | 波多野结衣视频网址 | 精品视频导航 | 美女大黄网站 | 午夜福利视频合集1000 | 中文无码一区二区三区在线观看 | 久久精品伦理 | 69av片| av黄| 巨大黑人极品videos精品 | 另类激情亚洲 | 一区二区三区四区五区在线视频 | 奇米综合网 | 日日噜噜噜噜久久久精品毛片 | 一级片视频播放 | 亚洲欧美日韩精品久久 | 亚洲伊人精品 | 先锋资源一区 | 亚洲影视一区二区三区 | 无码人妻精品一区二区三区蜜桃91 | 91黄免费| 在线sese| 四虎av影院| 欧美大片91 | 新版天堂资源中文8在线 | 夜夜夜操 | 日韩精品一区二区三区网站 | 四虎av网站 | 久久亚洲成人 | av五十路 | 韩国av电影网站 | 欧美极品在线观看 | 亚洲精品二区三区 | 国产电影免费观看高清完整版视频 | 国产精品扒开做爽爽爽的视频 | 丰满大乳奶做爰ⅹxx视频 | 亚洲熟女一区二区三区 | 美腿丝袜一区二区三区 | 色亭亭 | 国产午夜亚洲精品午夜鲁丝片 | 超碰8| 午夜视频福利在线 | 日韩国产精品一区二区三区 | 免费av福利 | 综合欧美亚洲 | 国产精品久久免费 | 超碰天天操 | 在线免费观看黄 | 欧美日韩三级在线 | 美女av毛片 | 欧美黑人一级 | 久久最新| 天天综合亚洲 | 欧美成人免费看 | 亚洲ⅴ国产v天堂a无码二区 | 国产精品久久伊人 | 天堂福利在线 | 亚洲无码精品在线观看 | 国产精品3 | 全肉的吸乳文 | 色欧美视频 | 女同性做受全过程动图 | 51久久 | 真实的国产乱xxxx在线 | 亚洲欧美另类综合 | 一区二区导航 | 色网在线看 | 狠狠v欧美v日韩v亚洲ⅴ | 青青草免费观看视频 | 91精品国产一区二区无码 | 欧美激情免费在线 | 日韩视频一区二区三区在线播放免费观看 | 不卡的av在线免费观看 | 成人小视频在线免费观看 | 国产精品12区| 小婕子伦流澡到高潮h | 456av| 国产精品日日摸夜夜爽 | 高清一二三区 | 欧美性猛交ⅹ乱大交3 | a一级黄色片 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 蜜臀av无码一区二区三区 |