亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java -- 訪問權限控制

發布時間:2020-08-27 20:10:16 來源:網絡 閱讀:111 作者:wx5df88c1febeca 欄目:編程語言

訪問權限控制

沒有權限控制的時候,由于所有的接口都是可以訪問的。當一個類庫部分代碼,發現有更好的方法解決的時候,可能其他接口會發生改動。這會導致另一個地方的引用該類庫的程序發生崩潰。為了解決這種問題,權限管理就顯得尤為重要了。

在Java中提供了訪問權限控制修飾詞。以供類庫開發人員向客戶端程序員說明哪些功能是可以用的,那也有是不可以用的。

一、包:庫單元

內含有一組類,他們在單一的名字空間之下被組織到了一起

類名沖突?不存在的

在程序中,如果需要其他包的類,就需要導入

import java.util.*;

之所以要導入,就是因為要提供一個管理名字空間的機制。所有類之間的名字是相互隔離的。如果在機器上編寫了相同名字的類,那個為每個類創建唯一的命名空間就會非常重要。

單一文件中的代碼,并不是不位于包中,而是已存在于未命名包中。

代碼組織

類庫實際上是一組類文件。每個文件,都有一個public類,以及任意數量非public類。

使用package語句,這個語句必須放在除注釋以外的第一句程序代碼:

//這是一句注釋package accsess.mypackage;public class MyClass { ? ?// 假裝里面有內容}

如果其他地方需要用這個類,那個就需要用引入import access.mypackage.*;或者使用全名access.mypackage.MyClass

創建一個獨一無二的包名

那個男孩不想要一個獨一無二的包名呢?

java包的命名用域名的方式來命名。眾所周知,域名是不會重復的,是唯一的。這樣的好處是,可以減少重復,而且方便別人的記憶。

環境變量CLASSPATH可以提供查找包的位置并且是全局的

CLASSPATH=.;D:\JAVA\JPackage

承接上文內容,java.util.*my.mypackage.*均存在一個類,叫做Vector那么,

import java.util.*;import my.mypackage.*;public class LibTest{ ? ?public void main(){ ? ? ? ?//! 下面的這一行代碼會報錯,因為你,我,編譯器都不知道是那個包里面的Vector類
 ? ? ? ?//! Vector V = new Vector();
 ? ? ? ?//因此要求使用全名,如下方的實例相同
 ? ? ? ?java.util.Vector V1 = new java.util.Vector();
 ? ? ? ?my.mypackage.Vector V2 = new my.mypackage.Vector();
 ? ?}
}

定制工具庫

通過包就可以定制自己的專屬工具庫了

//這里就舉例一個Print的工具庫吧!//這里就可以使用港方編輯的靜態類來解決問題了public class Print { ?
 ? ?public static void print(Object obj) {
 ? ? ? ?System.out.println(obj);
 ? ?} ? ?public static void print() {
 ? ? ? ?System.out.println();
 ? ?} ? ?public static void printnb(Object obj) {
 ? ? ? ?System.out.print(obj);
 ? ?} ? ?public static PrintStream ? ?printf(String format, Object... args) { ? ? ? ?return System.out.printf(format, args);
 ? ?}
}

二、Java訪問權限修飾詞

權限修飾詞public, privateprotected(包訪問權限又是也被稱為friendly

包訪問權限

包訪問權限允許包內的各個類組合起來,以便使他們彼此之間可以輕易地相互作用。

類控制著哪些代碼具有訪問自己成員的權限。獲取某成員的唯一途徑是:

  1. 使得該成員為public。無論是誰,無論在何地,都可以訪問該成員。
  2. 不加訪問權限修飾詞,將其他類放置在與該成員相同的包中。
  3. 繼承。
  4. 提供訪問器(accessor)和變異器(mutator)方法讀取和改變數值。如xxx.get(), xxx.set(Object obj)

public:接口訪問權限

使用關鍵字public以后,意味著成員對每個人都是可用的。

Java并不總是將當前目錄視為查找行為的起點之一。如果CLASSPATH缺少.作為路徑之一的話,Java就不會查找那里。

默認包

//文件一:Cake.javaclass Cake{ ? ?public static void main(String[] args){
 ? ? ? ?Pie x = new Pie();
 ? ? ? ?x.f();
 ? ?}
}//文件二:Pie.javaclass Pie{ ? ?void f(){
 ? ? ? ?System.out.println("Pie.f()");
 ? ?}
}//文件一、二均位于同一文件夾下

盡管這兩個文件看似沒啥關系,但是,他們的確享有包的訪問權限。Java將這樣的文件看作是隸屬于該目錄的默認包中。該目錄中的所有其他文件擁有包的訪問權限。

private:你無法訪問

除了包含這個成員的類除外,其他的任何類都無法訪問該成員。

由于對private關鍵字沒有啥感情,暫且寫這么多吧!

protected:繼承訪問權限

基類的創建者希望有某個特定的成員,把對它的訪問權限賦予派生類而不是所有類。那么就需要protected來完成這樣的工作。

在后續的繼承中會說明具體使用情況的QAQ

三、接口和實現

訪問權限的控制常稱為是具體實現的隱藏。把數據和方法包裝進類中,以及具體實現的隱藏。包裝后的結果是,一個同時帶有特征和行為的數據類型。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

和顺县| 东丽区| 临夏市| 友谊县| 方山县| 玉田县| 云阳县| 古丈县| 华容县| 克什克腾旗| 泰州市| 本溪市| 黄大仙区| 大英县| 万源市| 沈丘县| 吴川市| 宜川县| 建水县| 克山县| 调兵山市| 金山区| 施甸县| 社会| 丰宁| 德阳市| 义乌市| 昆山市| 临西县| 东乡族自治县| 高台县| 兴海县| 威信县| 神农架林区| 明光市| 轮台县| 武穴市| 阿荣旗| 合山市| 景宁| 辽阳县|