Ⅰ java中包訪問許可權private,protected,public和default的區別
public:可以被所有其他類所訪問
private:只能被自己訪問和修改
protected:自身、子類及同一個包中類可以訪問
default:同一包中的類可以訪問,聲明時沒有加修飾符,認為是friendly。
Ⅱ java中的兩個不同的包如何訪問
要麼帶入import
要麼在程序用到其他包的類的部分直接將該類掛上完整路徑,建議第一種
Ⅲ JAVA小問題,關於類訪問另一個包中的類的問題,請大神看清問題在作答
文件示例
張三告訴班主任:「我今年8歲了。」
Ⅳ java中訪問許可權的控制。java默認的是包訪問許可權,但是對於有些情況如何處理呢。例如有四組類abcd(每組里
如果不考慮其他的類的話,c訪問d,a不能訪問d,那麼把d相關許可權設為default,a,c處在不同包里,c、d在同一個包里。a,c都訪問b,那麼就讓b的許可權設為公開。
但這可能導致包之間管理的混亂。
如果一定要跨包訪問,但又不願設立public的訪問許可權,那麼單靠JAVA語言的訪問控制很難做到,則可以稍微提升一下耦合度,並藉助多態來實現。
比方說,a、b是兩個不同的包,要讓a能訪問b的default的東西,那麼可以如下:
a設立一個介面:
publicinterfaceIA
{
voidF();
}
某個要使用b的函數
publicclassA1
{
……
privateIAa;
……
publicvoidG(IAa)
{
……
this.a=a;//這樣就可以在別的方法里用
a.F();//多態,a根本不知道b里有什麼類也能訪問相應的方法。
……
}
}
以上是a里的,下面是b里的:
如果是整個類都是default的
classB1implementsIA
{
publicvoidF(){……}
publicB1()
{
newA1().G(this);//這樣就把自己傳給了a,a不用知道自己是什麼東東也能使用F方法。
}
}
如果是類的部分方法為default的
publicclassB2
{
……
voidFF();//想讓這個方法被a調用。
privateclassB22implementsIA//把B22的實例傳給a
{
publicvoidF()
{
FF();//這就等於讓a調用FF方法了。
}
}
}
上面這種方法缺點不少,得由b親自把自己的實例傳給a,使得類間的關系變得有點復雜,但是用好了還是可以最大程度降低其缺點。
上面這種結果是你要的嗎?還有什麼特別的要求嗎?
Ⅳ java中包到底是什麼意思包訪問許可權又是什麼意思,有C++基礎。
是否是說 first.java中有A B C 三個類,second.java中有D E F 三個類,那麼first和second是兩個不同的包?不是,這是java文件的組織方式,因為java強制要求一個public類必須在一個同名的文件中,但是多個包訪問許可權的類是可以在同一個文件夾中的
First.java
classA{
voidprint(){
System.out.println("A");
}
}
classB{
publicvoidprint(){
System.out.println("B");
}
}
classC{
publicvoidprint(){
System.out.println("C");
}
}
Second.java
classE{
publicvoidprint(){
System.out.println("E");
}
}
classD{
publicvoidprint(){
System.out.println("D");
}
}
classF{
publicvoidprint(){
System.out.println("F");
}
}
A B C D E F都是在同一個包中,而不是ABC在firstFirst包中,而DEF在Second包中
改寫Second.java
packagepackage2;
classE{
publicvoidprint(){
System.out.println("E");
}
}
classD{
publicvoidprint(){
System.out.println("D");
}
}
classF{
publicvoidprint(){
System.out.println("F");
}
}
你現在first.java中是無法訪問EDF類的,這才是包的概念,另一個包中的(First.java中的ABC是在默認包中也是另外一個包)是無法訪問EDF類的,因為他們是包訪問許可權,類只有兩種許可權,包訪問許可權和public許可權
包訪問是說我可以在first.java中訪問second的某些方法或生成D E F對象嗎?
是說如果first.java和second.java是在同一個包中,那麼是可以的,但是如果不在同一個包中,並且那些類或方法是包訪問許可權,那是沒有辦法訪問的
在添加一個類Third.java
packagepackage2.third;
classThird{
publicvoidprint(){
System.out.println("E");
}
}
classD{
publicvoidprint(){
System.out.println("D");
}
}
classF{
publicvoidprint(){
System.out.println("F");
}
}
這些類都是包訪問許可權,那麼E.java中的類可以訪問嗎?不可以,包沒有嵌套的概念,即使Third.java是在E.java的的子包中即E.java在package2中,而Third.java在package2.third
java中類的訪問許可權(不是內部類,內部類必須另加討論)只有public和包訪問許可權,要麼所有包中的類和方法都可以訪問,要麼只有在同一個包中的類才能訪問,並且
packagepackage2.third;
是在package2.third包中
packagepackage2;
實在package2包中,這是兩個不同的包,即使在電腦上third文件夾是在package2文件夾中
Ⅵ java包訪問許可權default和protected的區別
包訪問沒有許可權的說法,import什麼包就用什麼包。
protected private 指的是方法或內部類的訪問許可權。
Ⅶ Java 包(package)應用及訪問控制問題
果然還是分的魅力大,一樣的帖子居然差異那麼大,我就直接考過來了
分是不是少了點,我還得翻翻書,再看看,自己還得動手才行呀,實踐出真理
我一邊做一邊寫,D類為B的子類是不行的,預設類只能被包頌肆內的類訪問,
預設類相當於是包內的public,對於包外是不可見的,這里D只能繼承A類
還有預設方法也和預設類一樣,只是包內的public,這里D繼承A後,並不能用
A中的預設方法,所以由上得出:預設==包內的public,對於包外是private
Q3,對於包外的類,只能訪問public成員
Q4,不能訪問包外的預設類
Q5,Q6和上面是一樣的
Q7,能訪問除了private以外的所有成員
其實這4種訪問控制形成了一個完整的訪問脊櫻宏機制,
這里說一下protected 在包內 = public
在包外,只能被子類訪問,意思就是在包外的類只有櫻冊繼承了該類才能
訪問該類的protected成員
你最好去找一個訪問權力的標單,清晰明朗的說明了一切
Ⅷ java中同一個包中自由訪問的問題
你被調用的類裡面也有main主函數
這樣寫就可以了段塌猛衫姿
publicclassHelloTest{
publicstaticvoidmain(String[]args)
{
Helloh=newHello();
h.hello();
}
}
//被調用的類
class握橋Hello{
publicvoidhello()
{
System.out.print("hello,world");
}
}
我這兩個類你分開寫也行 我現在全復制在一起方便你查看
Ⅸ java同一個包下的類互相調用,應用哪個訪問許可權
java同一個包下的類互扮帶亂相調用,應用族之間數據交流訪問許可權,主要是你要通過相對應的數據交換,還有相對應的數據調用,通過這樣的方式進行使用對應的訪問許可權,所廳檔以你可以應用相對應的數據交流的訪問許可權,是同一個包下面的類目互行渣相調用
Ⅹ java包(package)應用及訪問控制問題,如何編寫程序
1、 C 類能只正常訪問 A類 和 A類用public修飾的屬性的方法,
2、如果B類為public C類能訪問B類的用public修改的屬性和余伏春方法
3、D類能訪問A類的用public 和 protected 修飾的屬性的方法
4、如果B類為public 修改的 D類能訪問用public 修飾的豎耐屬性的方法
public:共有的,包外的都可以訪問,兒女和朋友可以訪問不用說了(所有地方)
protected:保護的,兒女和朋友和我的關系比較密切,他們可以訪問,其他的免談(相同包或者不同包的子廳穗類)
private:私有的,兒女不行,更不要說朋友,只有我自己本身可以訪問(只有自己內部訪問)
friendly:什麼都不寫時默認是friendly,朋友可以訪問 (相同包可以訪問,不同包子類「不」能訪問)