淺談java面向?qū)ο笾兴姆N權(quán)限
俗話說沒有規(guī)矩就沒有方圓,java作為一門嚴(yán)謹(jǐn)?shù)拿嫦驅(qū)ο蟮母呒壘幊陶Z言,自然對權(quán)限整個重要的問題有嚴(yán)格的控制。
Java中,可以通過一些Java關(guān)鍵字,來設(shè)置訪問控制權(quán)限;
主要有 private(私有), package(包訪問權(quán)限),protected(子類訪問權(quán)限),public(公共訪問權(quán)限)
在java里,這些語句都可以修飾類中的成員變量和方法,但是只有public和友好型可以修飾類。舉個例子:
接下來就詳細(xì)解釋一下這幾種權(quán)限的差別(博客最后有表格)按權(quán)限由低到高:(高權(quán)限有低權(quán)限所有特性)
Private:
類中的所有private方法和private成員變量只能在類中訪問而不能在其他類中訪問。
例如:
package Main;
public class Private {
private int a;
private int b;
Protected (){
this.a=1;
this.b=2;
//a和b只能在Private類中調(diào)用
}
private void set(){
System.out.println(""+a+""+b+"\n");
}
void Print(){
this.set();
//只能在這里用;
}
}
友好型和protected:
如果在另一個類中聲明其他的一個類,如果這兩個在一個包中那么另一個類能訪問這個其他類的友好型變量不同包不能訪問:
如果在另一個B類中聲明其他的一個類A,如果這兩個在一個包中那么另一個類B也能能訪問這個其他類A的protected變量(或方法),如果不在一個包,那么如果類A有一個父類C如果,如果父類C中有一個protected變量(或方法),只要B,C在一個包中,B就能使用A中從父類繼承的protected方法。如果A是B的子類,如果AB不在一個包中,那么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父類的protect方法
Frindly prot =new Frindly();
System.out.println(prot.a);
//在Main類中調(diào)用友好型的變量
prot.set();
//在Main類中調(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();
//在另一個包中調(diào)用里父類中的protect構(gòu)造方法
super.a=12;
//調(diào)用父類的protect變量
}
}
Public:
如果類中的方法或者變量是public,那么就可以在別的類中調(diào)用,沒有限制(用在夸包)。A帶掉用別的包中的B類
package Main;
import Public.*;
public class Main {
public static void main(String args[]){
int a;
Public p=new Public();
//調(diào)用public類中的public方法
a=p.a;
//調(diào)用Public類中的public變量
p.set();
}
}
package Public;
public class Public {
public int a=12;
public void set (){
System.out.println("OK\n");
}
}
總結(jié)表格::
|
|
同包 |
不同包 |
|||
|
|
子類 |
非子類 |
子類 |
非子類 |
|
|
Private |
是 |
否 |
否 |
否 |
否 |
|
友好型 |
是 |
是 |
是 |
否 |
否 |
|
Protected |
是 |
是 |
是 |
是 |
否 |
|
Public |
是 |
是 |
是 |
是 |
是 |
總結(jié)
以上就是本文關(guān)于淺談java面向?qū)ο笾兴姆N權(quán)限的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
spring boot實(shí)戰(zhàn)之本地jar包引用示例
本篇文章主要介紹了spring boot實(shí)戰(zhàn)之本地jar包引用示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10
SpringBoot中@ConditionalOnProperty的使用及作用詳解
這篇文章主要介紹了SpringBoot中@ConditionalOnProperty的使用及作用詳解,@ConditionalOnProperty通過讀取本地配置文件中的值來判斷 某些 Bean 或者 配置類 是否加入spring 中,需要的朋友可以參考下2024-01-01
java實(shí)現(xiàn)mongodb的數(shù)據(jù)庫連接池
這篇文章主要介紹了基于java實(shí)現(xiàn)mongodb的數(shù)據(jù)庫連接池,Java通過使用mongo-2.7.3.jar包實(shí)現(xiàn)mongodb連接池,感興趣的小伙伴們可以參考一下2015-12-12
利用Java反射機(jī)制實(shí)現(xiàn)對象相同字段的復(fù)制操作
這篇文章主要介紹了利用Java反射機(jī)制實(shí)現(xiàn)對象相同字段的復(fù)制操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Java 通過AQS實(shí)現(xiàn)數(shù)據(jù)組織
這篇文章主要介紹了通過AQS實(shí)現(xiàn)數(shù)據(jù)組織,想了解AQS的同學(xué)可以參考下2021-04-04
Spring?cloud如何實(shí)現(xiàn)FeignClient指定Zone調(diào)用
這篇文章主要介紹了Spring?cloud如何實(shí)現(xiàn)FeignClient指定Zone調(diào)用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
java實(shí)現(xiàn)后臺返回base64圖形編碼
這篇文章主要介紹了java實(shí)現(xiàn)后臺返回base64圖形編碼,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06

