Java編程訪問權(quán)限的控制代碼詳解
本文研究的主要是Java編程訪問權(quán)限的控制的相關(guān)內(nèi)容,具體介紹如下。
之前沒去注意的修飾符,一般變量前面沒添加,一個是不知道有什么用,一個是懶,后面遇到項目的時候就會發(fā)現(xiàn)私有和公有區(qū)別還是很大的。
(1)首先是包名
使用一個類的時候,例如集合類,就需要引入這個包,然后再使用該包下面的類。如:
package com.myown.iaiti;
public class Print {
static void print(String s){
System.out.println(s);
}
}
自定義的包,通過引入自己的包,以后你就可以使用自己寫的方法進行字符串的打印。之前試過將自己包的路徑設(shè)進CLASSPATH中,那么在其他目錄編譯,不需要將包放進該目錄,也可以正常運行,不然的話是找不到JAR包的。
(2)public
public,公共的,以前的老師經(jīng)常用老子來比喻,這是公共的東西,老子給你用,public緊跟數(shù)據(jù)成員,說明對每個人都是可用的。
(3)private
private,私有的,老子的私有財產(chǎn),你不要動它,除了包里含有這個數(shù)據(jù)成員的類可以用之外,其他類不能使用,這部分是設(shè)計者本身不想給外人看和修改的。
public class Print {
public static void main(String[] args) {
GetIt g = new GetIt();
}
}
class GetIt{// 注意 一個文件只能有一個公共類 如果你想在
//前面加上public 那么就不要和Print寫在同一個文件
private GetIt(){}
}
The constructor GetIt() is not visible,不可見,看出用處了吧,單例模式也是這么用的,控制對象的創(chuàng)建。
單例模式的應(yīng)用:
class A{
private A(){}
private static A a = new A();
public static A getInstace(){
return a;
}
}
其他的類不能通過new來創(chuàng)建對象,因為構(gòu)造器被private所修飾,用處在于,當(dāng)這個A類極為復(fù)雜,耗內(nèi)存的時候,我需要嚴格控制A對象的創(chuàng)建。既然舉了單例,順便就把單例給講了。之前看過一些人寫的,實在太經(jīng)典,太厲害了。
上面那種是屬于餓漢式,就是一來就幫你new出來,以后new的時候就直接用,不存在線程問題,缺點是放著如果沒用的話就是資源浪費。
懶漢式
public class A {
private A(){ }
private static A a;
public static A getInstance(){
if(a == null){
return a = new A();
}else{
return a;
}
}
}
用的時候才幫你new,為null才new,但是存在線程問題,加上synchronized,但是效率降低,因為多線程的話,其中有一個在用的話,就會霸占著。
完美的方法是結(jié)合兩者:
public class A {
// 私有靜態(tài)內(nèi)部類, 只有當(dāng)有引用時, 該類才會被裝載
private static class LazyA {
public static A A = new A();
}
public static A getInstance() {
return LazyA.A;
}
}
前看不懂這個所謂的靜態(tài)內(nèi)部類,作用是,既可以做到延時加載,因為只有當(dāng)使用的時候才會去new,用getInstace方法,不存在多線程問題是因為,靜態(tài)類屬于所有外部類對象,只會加載一次,而靜態(tài)內(nèi)部類實例化之后,便是類級別的屬性,不屬于某個對象,只會加載一次,這樣就不會存在資源浪費,也沒有多線程效率低的問題。想出這個方法的人真的厲害。
(4)protected
Print是基類,國人喜歡講父類,但是老外覺得子類更牛逼,基類算是一個根基或者基礎(chǔ)吧,protected就是老子專門留給兒子的財產(chǎn)。
public class Print {
protected void print(){}
private void cannotprint(){}
}
public class PrintSon extends Print{
void get(){
print();
//cannotprint(); private 私有的方法,子類還是不能用
}
}
public class NotSon {
void get() {
print();
}
}
protected修飾的,子類可以拿到,介于public和private之間。
(5)類的訪問權(quán)限
每個文件只能有一個public類。
類名和文件名一致。
單例的話如果沒基礎(chǔ)看起來有點超前,但是后面知識點完善之后,會容易理解,訪問權(quán)限的控制還是在于你想不想把自己的那部分代碼給別人直接使用。
總結(jié)
以上就是本文關(guān)于Java編程訪問權(quán)限的控制代碼詳解的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
Springmvc DispatcherServlet原理及用法解析
這篇文章主要介紹了Springmvc DispatcherServlet原理及用法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09
IntelliJ IDEA搜索整個項目進行全局替換(有危險慎用)
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA搜索整個項目進行全局替換(有危險慎用),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10
SpringMVC框架和SpringBoot項目中控制器的響應(yīng)結(jié)果深入分析
這篇文章主要介紹了SpringMVC框架和SpringBoot項目中控制器的響應(yīng)結(jié)果,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12
Spring Boot中slf4j日志依賴關(guān)系示例詳解
在項目開發(fā)中,記錄日志是必做的一件事情。而當(dāng)我們使用Springboot框架時,記錄日志就變得極其簡單了。下面這篇文章主要給大家介紹了關(guān)于Spring Boot中slf4j日志依賴關(guān)系的相關(guān)資料,需要的朋友可以參考下2018-11-11
聊聊Java 成員變量賦值和構(gòu)造方法誰先執(zhí)行的問題
這篇文章主要介紹了聊聊Java 成員變量賦值和構(gòu)造方法誰先執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
Spring Boot接收單個String入?yún)⒌慕鉀Q方法
這篇文章主要給大家介紹了關(guān)于Spring Boot接收單個String入?yún)⒌慕鉀Q方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11

