一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java編程訪問權限的控制代碼詳解

Java編程訪問權限的控制代碼詳解

2021-03-26 13:31iaiti Java教程

這篇文章主要介紹了Java編程訪問權限的控制代碼詳解,涉及包名,公共的和私有的等相關內容,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是Java編程訪問權限的控制的相關內容,具體介紹如下。

之前沒去注意的修飾符,一般變量前面沒添加,一個是不知道有什么用,一個是懶,后面遇到項目的時候就會發現私有和公有區別還是很大的。

(1)首先是包名

使用一個類的時候,例如集合類,就需要引入這個包,然后再使用該包下面的類。如:

java" id="highlighter_917027">
?
1
2
3
4
5
6
7
package com.myown.iaiti;
 
public class Print {
  static void print(String s){
    System.out.println(s);
  }
}

自定義的包,通過引入自己的包,以后你就可以使用自己寫的方法進行字符串的打印。之前試過將自己包的路徑設進CLASSPATH中,那么在其他目錄編譯,不需要將包放進該目錄,也可以正常運行,不然的話是找不到JAR包的。

(2)public

public,公共的,以前的老師經常用老子來比喻,這是公共的東西,老子給你用,public緊跟數據成員,說明對每個人都是可用的。

(3)private

private,私有的,老子的私有財產,你不要動它,除了包里含有這個數據成員的類可以用之外,其他類不能使用,這部分是設計者本身不想給外人看和修改的。

?
1
2
3
4
5
6
7
8
9
10
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,不可見,看出用處了吧,單例模式也是這么用的,控制對象的創建。

單例模式的應用:

?
1
2
3
4
5
6
7
class A{
  private A(){} 
  private static A a = new A(); 
  public static A getInstace(){
    return a;
  }
}

其他的類不能通過new來創建對象,因為構造器被private所修飾,用處在于,當這個A類極為復雜,耗內存的時候,我需要嚴格控制A對象的創建。既然舉了單例,順便就把單例給講了。之前看過一些人寫的,實在太經典,太厲害了。

上面那種是屬于餓漢式,就是一來就幫你new出來,以后new的時候就直接用,不存在線程問題,缺點是放著如果沒用的話就是資源浪費。

懶漢式

?
1
2
3
4
5
6
7
8
9
10
11
12
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,但是效率降低,因為多線程的話,其中有一個在用的話,就會霸占著。

完美的方法是結合兩者:

?
1
2
3
4
5
6
7
8
9
public class A {
  // 私有靜態內部類, 只有當有引用時, 該類才會被裝載
  private static class LazyA {
    public static A A = new A();
  }
  public static A getInstance() {
    return LazyA.A;
  }
}

前看不懂這個所謂的靜態內部類,作用是,既可以做到延時加載,因為只有當使用的時候才會去new,用getInstace方法,不存在多線程問題是因為,靜態類屬于所有外部類對象,只會加載一次,而靜態內部類實例化之后,便是類級別的屬性,不屬于某個對象,只會加載一次,這樣就不會存在資源浪費,也沒有多線程效率低的問題。想出這個方法的人真的厲害。

(4)protected

Print是基類,國人喜歡講父類,但是老外覺得子類更牛逼,基類算是一個根基或者基礎吧,protected就是老子專門留給兒子的財產。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)類的訪問權限

每個文件只能有一個public類。

類名和文件名一致。

單例的話如果沒基礎看起來有點超前,但是后面知識點完善之后,會容易理解,訪問權限的控制還是在于你想不想把自己的那部分代碼給別人直接使用。

總結

以上就是本文關于Java編程訪問權限的控制代碼詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/iaiti/article/details/38418927

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 我与岳乱短篇小说 | 高清不卡一区二区 | 国产精品福利一区二区亚瑟 | 免费国产一级 | 好吊妞视频998www | 亚洲精品电影天堂网 | 婷婷色在线| 欧美视频在线一区 | 四虎影库紧急大通知 | 免费深夜福利 | 国产女乱淫真高清免费视频 | 日韩在线a视频免费播放 | 日本加勒比一区 | 爱情岛论坛自拍永久入口 | 久久精品中文騷妇女内射 | 亚洲欧美日韩中文字幕网址 | 成人免费网址 | 欧美va在线 | 四虎国产成人免费观看 | a∨79成人网 | 日韩永久在线观看免费视频 | 成人香蕉xxxxxxx | 欧美日韩综合网在线观看 | 午夜国产精品影院在线观看 | 亚洲日本中文字幕天天更新 | 69av导航| 桃花岛在线 | 999精品视频在线 | 亚洲国产成人综合 | 青青草成人在线观看 | 99精品在线视频 | 91系列在线观看免费 | 538免费精品视频搬运工 | 成人在线一区二区三区 | 国产小视频在线免费观看 | 欧美又大又粗又长又硬 | 日韩精品亚洲专区在线影视 | 星空传媒在线视频 | 草莓视频看污 | 亚洲天堂影院在线观看 | 2019中文字幕 |