淺談java面向?qū)ο笾兴姆N權(quán)限
俗話說(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è)置訪問(wèn)控制權(quán)限;
主要有 private(私有), package(包訪問(wèn)權(quán)限),protected(子類(lèi)訪問(wèn)權(quán)限),public(公共訪問(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)中訪問(wèn)而不能在其他類(lèi)中訪問(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)能訪問(wèn)這個(gè)其他類(lèi)的友好型變量不同包不能訪問(wèn):
如果在另一個(gè)B類(lèi)中聲明其他的一個(gè)類(lèi)A,如果這兩個(gè)在一個(gè)包中那么另一個(gè)類(lèi)B也能能訪問(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線程之鎖對(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
Java由淺入深細(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-08
mybatis-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-09
Java執(zhí)行cmd命令兩種實(shí)現(xiàn)方法解析
這篇文章主要介紹了Java執(zhí)行cmd命令兩種實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
EL表達(dá)式簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
EL全名為Expression Language,這篇文章主要給大家介紹EL表達(dá)式的主要作用及內(nèi)容簡(jiǎn)介,感興趣的朋友一起看看2017-07-07

