淺談java面向?qū)ο笾兴姆N權(quán)限
俗話(huà)說(shuō)沒(méi)有規(guī)矩就沒(méi)有方圓,java作為一門(mén)嚴(yán)謹(jǐn)?shù)拿嫦驅(qū)ο蟮母呒?jí)編程語(yǔ)言,自然對(duì)權(quán)限整個(gè)重要的問(wèn)題有嚴(yán)格的控制。
Java中,可以通過(guò)一些Java關(guān)鍵字,來(lái)設(shè)置訪(fǎng)問(wèn)控制權(quán)限;
主要有 private(私有), package(包訪(fǎng)問(wèn)權(quán)限),protected(子類(lèi)訪(fǎng)問(wèn)權(quán)限),public(公共訪(fǎng)問(wèn)權(quán)限)
在java里,這些語(yǔ)句都可以修飾類(lèi)中的成員變量和方法,但是只有public和友好型可以修飾類(lèi)。舉個(gè)例子:
接下來(lái)就詳細(xì)解釋一下這幾種權(quán)限的差別(博客最后有表格)按權(quán)限由低到高:(高權(quán)限有低權(quán)限所有特性)
Private:
類(lèi)中的所有private方法和private成員變量只能在類(lèi)中訪(fǎng)問(wèn)而不能在其他類(lèi)中訪(fǎng)問(wèn)。
例如:
package Main; public class Private { private int a; private int b; Protected (){ this.a=1; this.b=2; //a和b只能在Private類(lèi)中調(diào)用 } private void set(){ System.out.println(""+a+""+b+"\n"); } void Print(){ this.set(); //只能在這里用; } }
友好型和protected:
如果在另一個(gè)類(lèi)中聲明其他的一個(gè)類(lèi),如果這兩個(gè)在一個(gè)包中那么另一個(gè)類(lèi)能訪(fǎng)問(wèn)這個(gè)其他類(lèi)的友好型變量不同包不能訪(fǎng)問(wèn):
如果在另一個(gè)B類(lèi)中聲明其他的一個(gè)類(lèi)A,如果這兩個(gè)在一個(gè)包中那么另一個(gè)類(lèi)B也能能訪(fǎng)問(wèn)這個(gè)其他類(lèi)A的protected變量(或方法),如果不在一個(gè)包,那么如果類(lèi)A有一個(gè)父類(lèi)C如果,如果父類(lèi)C中有一個(gè)protected變量(或方法),只要B,C在一個(gè)包中,B就能使用A中從父類(lèi)繼承的protected方法。如果A是B的子類(lèi),如果AB不在一個(gè)包中,那么A可以使用B中protected方法。
例如:
package Main; import Protected.*; public class Main { public static void main(String args[]){ Protected jkl=new Protected(); jkl.Print(); //調(diào)用jkl父類(lèi)的protect方法 Frindly prot =new Frindly(); System.out.println(prot.a); //在Main類(lèi)中調(diào)用友好型的變量 prot.set(); //在Main類(lèi)中調(diào)用友好型的方法 } } package Main; public class Frindly { int a,b,c,d; Frindly(){ a=b=c=d=1; } void set (){ System.out.print(""+a+" "+b+"\n"); } } package Main; public class Protectedfather{ protected int a; private int b; protected Protectedfather (){ this.a=1; this.b=2; //a和b只能在Protected中調(diào)用 } private void set(){ System.out.println(""+a+""+b+"\n"); } protected void Print(){ this.set(); //只能在這里用; } } package Protected; import Main.*; public class Protected extends Protectedfather{ public Protected(){ super(); //在另一個(gè)包中調(diào)用里父類(lèi)中的protect構(gòu)造方法 super.a=12; //調(diào)用父類(lèi)的protect變量 } }
Public:
如果類(lèi)中的方法或者變量是public,那么就可以在別的類(lèi)中調(diào)用,沒(méi)有限制(用在夸包)。A帶掉用別的包中的B類(lèi)
package Main; import Public.*; public class Main { public static void main(String args[]){ int a; Public p=new Public(); //調(diào)用public類(lèi)中的public方法 a=p.a; //調(diào)用Public類(lèi)中的public變量 p.set(); } } package Public; public class Public { public int a=12; public void set (){ System.out.println("OK\n"); } }
總結(jié)表格::
|
同包 |
不同包 |
|||
|
子類(lèi) |
非子類(lèi) |
子類(lèi) |
非子類(lèi) |
|
Private |
是 |
否 |
否 |
否 |
否 |
友好型 |
是 |
是 |
是 |
否 |
否 |
Protected |
是 |
是 |
是 |
是 |
否 |
Public |
是 |
是 |
是 |
是 |
是 |
總結(jié)
以上就是本文關(guān)于淺談java面向?qū)ο笾兴姆N權(quán)限的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專(zhuān)題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- 將Java對(duì)象序列化成JSON和XML格式的實(shí)例
- 詳談Java中net.sf.json包關(guān)于JSON與對(duì)象互轉(zhuǎn)的坑
- Java編程實(shí)現(xiàn)對(duì)象克?。◤?fù)制)代碼詳解
- 關(guān)于Java跨域Json字符轉(zhuǎn)類(lèi)對(duì)象的方法示例
- Java編程構(gòu)造方法與對(duì)象的創(chuàng)建詳解
- Java和C++通過(guò)new創(chuàng)建的對(duì)象有何區(qū)別?
- java對(duì)象初始化代碼詳解
- Java線(xiàn)程之鎖對(duì)象Lock-同步問(wèn)題更完美的處理方式代碼實(shí)例
相關(guān)文章
Java實(shí)現(xiàn)學(xué)生管理系統(tǒng)詳解流程
這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06到底如何設(shè)置Java線(xiàn)程池的大小的方法示例
在我們?nèi)粘I(yè)務(wù)開(kāi)發(fā)過(guò)程中,或多或少都會(huì)用到并發(fā)的功能。那么并發(fā)線(xiàn)程池到底設(shè)置多大呢?文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Java由淺入深細(xì)數(shù)數(shù)組的操作下
數(shù)組對(duì)于每一門(mén)編程語(yǔ)言來(lái)說(shuō)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語(yǔ)言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。Java?語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類(lèi)型元素2022-04-04詳談springboot過(guò)濾器和攔截器的實(shí)現(xiàn)及區(qū)別
今天小編就為大家分享一篇詳談springboot過(guò)濾器和攔截器的實(shí)現(xiàn)及區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08mybatis-plus通用枚舉@JsonValue接收參數(shù)報(bào)錯(cuò)No enum constant
最近在使用mybatis-plus時(shí)用到了通用枚舉,遇到了問(wèn)題,本文主要介紹了mybatis-plus通用枚舉@JsonValue接收參數(shù)報(bào)錯(cuò)No enum constant,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09Java執(zhí)行cmd命令兩種實(shí)現(xiàn)方法解析
這篇文章主要介紹了Java執(zhí)行cmd命令兩種實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07EL表達(dá)式簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
EL全名為Expression Language,這篇文章主要給大家介紹EL表達(dá)式的主要作用及內(nèi)容簡(jiǎn)介,感興趣的朋友一起看看2017-07-07