修飾符與訪問許可權
A. 簡述三種訪問修飾符對類成員的訪問限制
public:訪問不受限制
private:只有類成員函數和友元函數才可以訪問
protected:只有類成員函數和派生類成員函數才可以訪問
B. java中的修飾符在子類中的訪問許可權
在父類中用public或者protected修飾的變數,在子類中可以訪問。
private的只有本類自身可以訪問。
默認的也就是friendly本類或者同一包中的類可以訪問。
作用域 當前類 同一package 子孫類 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
C. private、protected、pubic、internal修飾符的訪問許可權分別是
private : 私有成員, 在類的內部才可以訪問(只能從其聲明上下文中進行訪問)
protected : 保護成員,該類內部和從該類派生的類中可以訪問
Friend:友元 ,聲明 friend 元素的程序集中的代碼可以訪問該元素,而不能從程序集外部訪問
Protected Friend:在派生類或同一程序集內都可以訪問
public : 公共成員,完全公開,沒有訪問限制
internal: 在同一命名空間內可以訪問
D. java中類的訪問許可權修飾符有哪兩種求答案
不止兩種,public,protcet,private,沒有修飾符是默認訪問許可權
pravite 只能在同一個類中訪問protected,可以在同一個類、同一個包、不同包中的子類訪問默認:在同一個類、同一個包中訪問public 同一個類,同一個包、不同包中的子類、不同包中的非子類
E. java 的訪問修飾符是什麼
Java中的訪問修飾符
Java面向對象的基本思想之一是封裝細節並且公開介面。Java語言採用訪問控制修飾符來控制類及類的方法和變數的訪問許可權,從而向使用者暴露介面,但隱藏實現細節。訪問控制分為四種級別:
(1)public: 用public修飾的類、類屬變數及方法,包內及包外的任何類(包括子類和普通類)均可以訪問;
(2)protected: 用protected修飾的類、類屬變數及方法,包內的任何類及包外那些繼承了該類的子類才能訪問(此處稍後解釋),protected重點突出繼承;
(3)default: 如果一個類、類屬變數及方法沒有用任何修飾符(即沒有用public、protected及private中任何一種修飾),則其訪問許可權為default(默認訪問許可權)。默
認訪問許可權的類、類屬變數及方法,包內的任何類(包括繼承了此類的子類)都可以訪問它,而對於包外的任何類都不能訪問它(包括包外繼承了此類的子類)。default重點突出包;
(4)private: 用private修飾的類、類屬變數及方法,只有本類可以訪問,而包內包外的任何類均不能訪問它。
網上一些資料及一些書上用表格對java訪問修飾符做了清楚的總結,如下表所示:
重要總結:通過上面的分析,我們可以看到:
1.public、private和protected對我們來說沒有任何異議。
2. 頂層類只能用public訪問修飾符和default(默認)訪問修飾符修飾,其中用默認修飾符修飾的類(及沒有任何修飾符的類,如class B{})不能被其他包中的類繼承,這也說明了default(默認)訪問修飾符突出的是包許可權
3. protected:本人做了一次實驗,發現在不同包的子類中,new一個父類對象,並用該父類對象去訪問父類中的用protected修飾的類屬變數和方法時不能訪問,而new一個子類對象時,子類對象可以訪問(說明protected修飾的類可以被其他包中的類繼承)。也可以在子類重寫父類的方法中使用super關鍵字調用。這豈不是和上面表格中的總結(紅色對勾)沖突了?本人也是百思不得其解。最後在網上找到了一個相對比較認可的解釋,如下:
protected修飾符的修飾的成員變數和方法也稱為受保護的成員變數和方法, 受保護的成員變數和方法可以在本類或同一個包中的其它類(包括子類)中通過類的實例進行訪問,也可以被同一個包中的類或不同包中的類繼承,但是不能在不同包中的其它類(包括子類)中通過類的實例進行訪問。
4. 如果一個類使用public修飾,那該類的類名必須與他所在的源文件名相同。一個.java源文件中有且只有一個public類,頂層類只能用public和默認修飾符(即無修飾符)修飾;
5.final修飾的類不能被繼承,沒有子類。
6.abstract修飾的類不能被實例化,必須被子類繼承。類只要有一個抽象方法就必定是抽象類,但抽象類不一定要有抽象方法。
最終總結,就一句話:protected修飾符所修飾的類(這句話中指父類)屬成員變數和方法,只可以被子類訪問,而不管子類是不是和父類位於同一個包中。default修飾符所修飾的類屬成員變數和方法,只可被同一個包中的其他類訪問,而不管其他類是不是該類的子類。protected屬於子類限制修飾符,而default屬於包限制修飾符。
F. 簡述訪問許可權修飾符
public(公有的)、protected(受保護的)、default(默認的)、private(私有的)public:許可權最大,所有的類中都可以訪問protected:在同一類中和同一包的其它類以及不同包的其子類可以訪問default:就是沒有修飾單詞,在同一類中和同一包中的其他類訪問private:只能在本類中訪問,在其他類中要訪問的話,需要該類中提供的訪問方法或取值方法
G. 簡述 private、 protected、 public、 internal 修飾符的訪問許可權。
public:類或成員可以由同一程序集中的任何其他代碼或引用它的另一個程序集訪問。
private:只能通過同一個類或結構中的代碼訪問類型或成員。
protected:類或成員只能由同一個類中的代碼訪問,或者在從該類派生的類中訪問。
internal:類或成員可以由同一程序集中的任何代碼訪問,但不能從另一個程序集訪問。
(7)修飾符與訪問許可權擴展閱讀:
private、 protected、 public、 internal 修飾符除了可以單獨使用,還可以組合使用。
protected internal:訪問僅限於從包含類派生的當前程序集或類型。
private protected: 訪問僅限於從當前程序集中的包含類派生的包含類或類型。
除了使用protected internal或private protected組合時,成員或類只允許使用一個訪問修
飾符。名稱空間上不允許訪問修飾符。命名空間沒有訪問限制。
根據成員聲明發生的上下文,僅允許某些聲明的可訪問性。如果在成員聲明中未指定訪問修飾
符,則使用默認輔助功能。
頂級類型(不嵌套在其他類型中)只能具有internal或public可訪問性。這些類型的默認可訪
問性是internal。
H. 描述JAVA中的四個訪問修飾符,並描述他們運行訪問的許可權
你說的是四個許可權修飾符吧
public修飾的類可以在其他任意包訪問
protect修飾的類可以在同包內訪問
default修飾的類可以在本類和同包中訪問
private是私有的意思只能在本類中訪問
四個修飾符體現了面向對象的封裝性 適用他們盡可能把許可權降到最低 從而提高安全性
不要圖方便濫用public而失去封裝的意義
I. java 中有多少修飾符,它們的訪問許可權又是什麼
樓主問的是訪問控制符,只有訪問控制符才說訪問許可權
JAVA裡面 准確來講是有四個訪問控制符 默認、public、private、protected等四個
pravite 只能在同一個類中訪問
protected,可以在同一個類、同一個包、不同包中的子類訪問
默認:在同一個類、同一個包中訪問
public 同一個類,同一個包、不同包中的子類、不同包中的非子類
不知道樓主問的是不是這,如果不是可以再留言
J. 關於Java中類的訪問修飾符
一:訪問修飾符:
1.省略訪問修飾符
具有默認的訪問特性,即具有包訪問特性,只能被同一個包中的類使用。
2.public訪問修飾符
用於說明類和類的成員的訪問許可權。這種類叫公有類。在一個文件中只能有一個public類型的類。
例如:Rect和UseImport兩個類,分別在兩個不同的包中。順便回顧一下不同類要用import導入。(哎,一直就沒記住)
//Rect.java
pacakage my;
public class Rect
{
private int a,b;
public void init(int len,int width)
{
a=len;
b=width;
}
public int area()
{
return a*b;
}
}
//UseImport.java
import.my.*;//導入my 包的所有類
public class UseImport
{
public static void main(string[] args)
{
Rect x=new Rect();
x.init(2,3);
System.out.println("矩形面積為:"+x.area());
}
}
3.private
用private修飾的類成員成為私有成員,只能在聲明該成員的類中使用,不能在類外使用。一般通過本類中公有方法進行訪問。
4.protected
protected修飾的類成員為保護成員,可以被三種類使用,分別是該類本身,該類的所有子類,該類同包的其他類,該類的子類。
5.private protected
私有保護成員。可被兩種類使用。分別是:該類本身和該類的所有子類。
二:特徵修飾符
1.abstract:抽象
修飾類為抽象類,修飾方法為抽象方法。只要類中有抽象方法,就必須定義為抽象類。抽象方法只能聲明,不能實現。但是可以在其子類中對抽象方法進行實現。抽象類中也可以包含非抽象方法。
2.final:最終
修飾的類為終止類,不能有子類。修飾變數為終止變數,只可賦值一次。修飾方法為終止方法,不能在子類中更改。如Socket、ServerSocket等都是final類,防止黑客派生子類進行破壞。同時,final與abstract是相互矛盾的。
3.static:靜態
靜態成員無需通過對象調用,可以直接通過類名直接調用。
public class RectArea//輸出6 和 12
{
public static void main(String[] args)
{
System.out.println(area(2,3));
System.out.println(area(3,4));
}
static void area(int a,int b)