JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 請問修飾子protected 和 (default) [精華]
item1394

松隆子



發文: 81
積分: 4
於 2003-10-07 21:50 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問一下修飾子protected 和 (default)的區別
我覺得我對protected和(default)還是不太清楚
可以請各位前輩舉一下例子嗎?
謝謝....


anthonycs edited on 2004-04-22 20:22
reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
Kent_tseng





發文: 4
積分: 0
於 2003-10-08 17:52 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
第一:
(default) 可用於 class, method, data
protected 可用於 method, data 不可用於class (inner class除外)

第二:
(default) :
這個class, method 或 data 在同一個package中,可以被直接取用。

protested:
這個method 或 data 在同一個package中,可以被直接取用。
除此之外,如果有繼承關係,則不同的package中,也可以直接取用。

例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package a;
class A {
  int i = 0;                 // (default);
  protected int j = 0;  //  protected
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~
package a;
class B {
  public static void main(String[] args) {
    A a = new A();
    a.i = 2;                // ok  在同一個package
    a.j = 2;                // ok  在同一個package
  }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~
package b;
import a.A;
class C {
  public static void main(String[] args) {
    A a = new A();
    a.i = 2;                // fail  不在同一個package
    a.j = 2;                // fail  不在同一個package
  }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
package b;
import a.A;
class D extends A{
  public static void main(String[] args) {
    A a = new A();
    a.i = 2;                // fail  不在同一個package
    a.j = 2;                // ok  不在同一個package,但是透過繼承後,protected可以被讀取
  }
}

ps:
抱歉,懶的測試,不過我想應該沒有打錯才對。
Big Smile


anthonycs edited on 2004-04-22 20:42
reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
item1394

松隆子



發文: 81
積分: 4
於 2003-10-11 17:53 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
謝謝您的回應!
若有問題我還會在請教各位的....


item1394 edited on 2005-10-23 00:09
reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
magicfish





發文: 209
積分: 3
於 2003-10-11 23:04 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
一般的class只能用public去修飾
但是把protected或private用在inner class上大概算是一種特例吧


reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
frank



版主

發文: 498
積分: 13
於 2003-10-12 00:35 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
有把 modifier 又稱為 access specifier(存取修飾子)

Each access specifier controls the access for only that particular definition.(TIJ2 ch5.Java access specifiers)
就是說在 modifier 控制他所定義的那一部份的存取權限

又分為 public, protected, private 和預設的 modifier(即上文說的 friendly),其中差別一般 java 入門書籍都會提到,在此不再贅述。
但對一般新手而言,不容易理解其差別,
每次公司新人對這部分有疑義時,都用下面的譬喻告訴他們,雖不是很恰當,但好像還滿容易瞭解的,也希望對大家有幫助,

我們以大宅院裡頭的一個戶長(以下簡稱老子)表示一個class 為例:

private:俗語說:『各玩各的鳥』, 有些東西是不能跟任何人分享的,只有保留下來自己用,因此將這類東西(field or method) 設為 private,限制別人的存取

public:管你是漳州還是泉州,芋仔還是蕃薯,只要你能從地圖上找到這個宅院的位址(import 了這個 package),只要設為 public 的東西,就允許別人來玩弄,像是老子開了個館子,只要有錢子,誰都能來玩

最容易搞混的就是下面兩個了,其實兩者的差異在院子(package)裡或院子外

friendly:老子開館子賺了些錢,想回饋鄰里,因此,提供了一些東西給街坊鄰居一起玩,這些東西所有權還是屬於這個老子,但是同意這個院子裡的其他人來存取,因此同一 package 下的其他 class 都可以來存取這一類的 field or method

protected:有些東西不想給外面其他人來使用(不設 public),但都給鄰居給玩了,老子覺得出門在外(不在同一 package)的兒子想要使用應該也可以使用,所以就設個 protected 門檻,
也就是說,
1.當class 不在同一 package 下時,只能存取存取對象的 public member,
2.但當存取者為被存取者的子類別時,即可使用(存取)被存取對象的 protected member,
3.一個class/object 的 friendly member 只限同一 package 內存取

要將限制級的譬喻,改成輔導級的的確有點困難
希望別反而搞亂大家的認知


frank edited on 2003-10-12 01:22
reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:frank]
anthonychen

外線交給我

版主

發文: 2033
積分: 8
於 2003-10-12 00:45 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
frank wrote:
...恕刪..

要將限制級的譬喻,改成輔導級的的確有點困難
希望別反而搞亂大家的認知


寫的很好。
但是...我有點亂@@ (是沒看過大宅們的關係嗎???)


reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
item1394

松隆子



發文: 81
積分: 4
於 2003-12-05 01:35 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
在 eclipse 上試過 Kent_tseng 附上的例子之後發現幾個問題
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package a;
class A {  => (default)應改為 public 否則在別的 package 中不能被 import
   int i = 0;   // (default);  
   protected int j = 0;  //  protected
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~
package a;
class B {  
   public static void main(String[] args) {    
      A a = new A();    
      a.i = 2;   // ok  在同一個package    
      a.j = 2;   // ok  在同一個package  
   }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~
package b;
import a.A;
class C {  
   public static void main(String[] args) {    
      A a = new A();    
      a.i = 2;    // fail  不在同一個package    
      a.j = 2;    // fail  不在同一個package  
   }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
package b;
import a.A;
class D extends A{  
   public static void main(String[] args) {    
      A a = new A();    
      a.i = 2;     // fail  不在同一個package    
      a.j = 2;     // ok  不在同一個package,但是透過繼承後,protected可以被讀取   
                         =>    結果是 fail 但不知為何
   }
}

好啦, 那問題是出在哪呢? Black Eye


item1394 edited on 2003-12-05 22:44
reply to postreply to post
Once an angel,
now an abomination.
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
qop

Newbie



發文: 204
積分: 3
於 2003-12-05 12:39 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不是 public class 都不能在別的 package 使用。

平常寫程式大概都使用 default package, 而且繼承的都是 API 裡的 public class (幾乎都是 public members), 更不會自找麻煩使用protected, 所以也沒有去注意這個問題。書上怎麼講大概就怎麼相信。
下面使用 default package (a.A 為 public class )
1
2
3
4
5
6
7
public class E extends a.A{  
  public static void main(String[] args) {
    a.A a_ = new a.A();
    a_.i = 2;
    a_.j = 2;
  }
}
編譯結果
1
2
3
4
5
6
7
8
C:\java2tb\b>javac E.java
E.java:4: i is not public in a.A; cannot be accessed from outside package
                a_.i = 2;
                  ^
E.java:5: j has protected access in a.A
                a_.j = 2;
                  ^
2 errors
其實也就是說 只要不是 public 都不能在別的 package 使用
可是已經有繼承了哩!
1
2
3
4
5
6
7
public class F extends a.A{  
  public static void main(String[] args) {
    F f = new F();
    f.i = 2;
    f.j = 2;
  }
}
編譯結果,繼承沒有問題,但是就是不讓你用繼承來的 protected member
應該說「跨 package 時,friendly members 沒被繼承」
1
2
3
4
5
C:\java2tb\b>javac F.java
F.java:4: i is not public in a.A; cannot be accessed from outside package
                f.i = 2;
                 ^
1 error
所以跨 package 時, protected members 只能透過繼承來取用
而不是在子類中可以自由取用父類的 protected members

可是什麼時候該用 protected.... 好像是個難題 >"<


reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:qop]
item1394

松隆子



發文: 81
積分: 4
於 2003-12-05 23:15 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
qop wrote:
恕刪...
可是已經有繼承了哩! => 不清楚跟繼承有什麼關係
恕刪...
編譯結果,繼承沒有問題,但是就是不讓你用繼承來的 protected member
=>應該是不讓用 friendly member 吧

書上怎麼講大概就怎麼相信?!
不試一試怎麼知道對錯呢


item1394 edited on 2003-12-05 23:57
reply to postreply to post
Once an angel,
now an abomination.
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
qop

Newbie



發文: 204
積分: 3
於 2003-12-05 23:49 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
item1394 wrote:
書上怎麼講大概就怎麼相信?!
不試一試怎麼知道對錯呢

是啊
通常是遇到問題才有氣力去試
因為要試的東西實在太多啦


不清楚跟繼承有什麼關係

F extends a.A
extends 之後子類別物件包含父類別物件
F型別的物件其實包含了一個 a.A 型別的物件
無法透過子物件參照取用的父類物件成員, 我們會稱為沒有被繼承
跨 package 時, friendly 沒被繼承, protected 有被繼承。


應該是不讓用 friendly member 吧

其實就是沒有被繼承


qop edited on 2003-12-06 00:03
reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:qop]
item1394

松隆子



發文: 81
積分: 4
於 2003-12-06 00:22 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
qop wrote:
extends 之後子類別物件包含父類別物件
F型別的物件其實包含了一個 a.A 型別的物件

這句話不懂耶, 子類別物件包含父類別物件?
物件=>instance?


reply to postreply to post
Once an angel,
now an abomination.
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
qop

Newbie



發文: 204
積分: 3
於 2003-12-06 01:18 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
下列為 Sub.java 的內容,你可以告訴我結果速什麼嗎?
1
2
3
4
5
6
7
8
9
10
11
12
class Super{
  private int i=5;
  public int getI(){
    return i;
  }
}
class Sub extends Super{
  public static void main(String[]s){
    Sub sub = new Sub();
    System.out.println("我要取得 i 值 " + sub.getI());
  }
}

編譯會出錯嗎? 或是有結果? 為什麼?


reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2003-12-06 02:04 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
item1394 wrote:
好啦, 那問題是出在哪呢? Black Eye


注意到,protected 的意思是:當這個 class 的 object 成為別人的 subobject 時,擁有這個 subobject 的 object 可以存取這個 subobject 的 protected member。而不是說:任何的 derived class instance 可以存取任一個 superclass instance's protected member。


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:請問修飾子proteceted 和 (default) [Re:qop]
item1394

松隆子



發文: 81
積分: 4
於 2003-12-06 09:54 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
qop wrote:
下列為 Sub.java 的內容,你可以告訴我結果速什麼嗎?
1
2
3
4
5
6
7
8
9
10
11
12
class Super{
  private int i=5;
  public int getI(){
    return i;
  }
}
class Sub extends Super{
  public static void main(String[]s){
    Sub sub = new Sub();
    System.out.println("我要取得 i 值 " + sub.getI());
  }
}

編譯會出錯嗎? 或是有結果? 為什麼?

編譯不會出錯
結果為
1
我要取得 i 值 5

Sub 繼承到 Super 的 priivate int = 5 和 public int getI();
而能夠 直接使用的只有 public 的 getI()
這是 encapsulation 的應用, 將一個屬性設為 private 時即表示在別的 class 沒辦法直接使用它, 只可透過方法去存取這個屬性, 所以可以透過繼承而來的 public int getI() 來加以存取 private i


item1394 edited on 2003-12-06 10:07
reply to postreply to post
Once an angel,
now an abomination.
作者 Re:請問修飾子proteceted 和 (default) [Re:Duncan]
item1394

松隆子



發文: 81
積分: 4
於 2003-12-06 10:15 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Duncan wrote:
注意到,protected 的意思是:當這個 class 的 object 成為別人的 subobject 時,擁有這個 subobject 的 object 可以存取這個 subobject 的 protected member。而不是說:任何的 derived class instance 可以存取任一個 superclass instance's protected member。

subobject 父物件?
嗯... 不了解
可以舉個例子嗎? Big Smile


reply to postreply to post
Once an angel,
now an abomination.
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
qop

Newbie



發文: 204
積分: 3
於 2003-12-06 11:33 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
item1394 wrote:
Sub 繼承到 Super 的 priivate int = 5 和 public int getI();
而能夠 直接使用的只有 public 的 getI()
這是 encapsulation 的應用, 將一個屬性設為 private 時即表示在別的 class 沒辦法直接使用它, 只可透過方法去存取這個屬性, 所以可以透過繼承而來的 public int getI() 來加以存取 private i

Sub 沒有繼承 private int i = 5 只繼承 public int getI()
因為你不能用 sub 去取用 i , 但是你可以呼叫 getI()
也就表示 sub 裡面有個 i , 你不能直接用, 但你可以透過繼承而來的 getI() 去取得
所以我會說「 Subclass instances include superclass instances」
你可以在 Super 類中加個 void setI(int i) 看看。

另一個證據是,建立子類別實體時,會透過子類別建構子去呼叫父類別建構子
呼叫父類別建構子的用意當然是建立父類別實體Smile


reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:qop]
item1394

松隆子



發文: 81
積分: 4
於 2003-12-06 12:36 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
qop wrote:
Sub 沒有繼承 private int i = 5 只繼承 public int getI()
因為你不能用 sub 去取用 i , 但是你可以呼叫 getI()
恕刪...

想請問一下那沒有繼承 private int i = 5的意思是否指的是子類別並沒有繼承到直接存取i的權力
毀了,這句話「 Subclass instances include superclass instances」我還是無法體會
呼叫父類別建構子的用意當然是建立父類別實體那這個父類別實體指向哪一個參考(reference)呢?
建立父類別實體有什麼作用, 跟這句話 Subclass instances include superclass instances有何關聯


item1394 edited on 2003-12-06 13:01
reply to postreply to post
Once an angel,
now an abomination.
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2003-12-06 17:15 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
item1394 wrote:
subobject 父物件?
嗯... 不了解
可以舉個例子嗎? Big Smile


class B extends A{}

忽略 A, B 的實做細節,並假設 B/A 分處不同的 package(把注意力放在繼承的關係上)。

A 裡頭的 protected member(field/method) 開放給 B,在意義上不是任何一個 B instance 皆可 access 任一個 A instance 的 protected member。

不需要明列實做細節,我們可以確定的是,當一個 B instance 建構時定有某一個 B 的 constructor 並執行,而此 constructor 執行的過程中定有一個 A 的 constructor 被喚起,以用來初始化此 B instance 裡透過繼承關係從 class A 得來的一份 A subobject,這個 B instance 只能 access 自身裡結構同於一個 A object 的這一份 subobject 的 protected member。而對於同一個 package 內的某個 class X 的任一個 instance 皆可 access 任一個 A instance 的 protected member,也就是說 protected member 在 package 與 derived class 的關係,效用的範圍不同:protected member 可以讓同一個 package 的其他
class 碰到,是 class 這一層面,而 protected member 可以讓位於不同 package 裡的 derived class 碰到,是 instance 層面。

對於許多書籍或文件提到,可以 access 一 class Y 之protected member 的除了定義此 member 的 class Y 之外,不是處於 Y 同一個 package 的 class 就是 Y 的 derived class。我認為這一說法並不太適當(不夠清楚)。


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
qop

Newbie



發文: 204
積分: 3
於 2003-12-06 18:19 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
item1394 wrote:
想請問一下那沒有繼承 private int i = 5的意思是否指的是子類別並沒有繼承到直接存取i的權力
毀了,這句話「 Subclass instances include superclass instances」我還是無法體會
呼叫父類別建構子的用意當然是建立父類別實體那這個父類別實體指向哪一個參考(reference)呢?
建立父類別實體有什麼作用, 跟這句話 Subclass instances include superclass instances有何關聯

我覺得你應該找一本書,有系統地看完其繼承的相關章節
這樣觀念才會比較完整
不然就會像給你一小塊拼圖, 而要你畫出整張圖一樣...
Good Luck
Smile


reply to postreply to post
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
item1394

松隆子



發文: 81
積分: 4
於 2003-12-08 22:49 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
書上的範例n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Test
{
     public static void main(String argv[])
     {
          A a = new A();
          B b = new B();
 
         System.out.println("a.i = " + a.i);
         System.out.println("b.i = " + b.i);         
     }
}
 
class A
(
     int i = 10;
 
     public A()
     {
          System.out.println(i);
     }
)
 
class B extends A
(
     public B()
     {
          System.out.println(i);
     }
)

結果為
1
2
3
4
5
10
10
10
a.i = 10
b.i = 10


離題了
不過我覺得是不是跟subclass instances include superclass instances有關?


morchory edited on 2003-12-08 23:22
reply to postreply to post
Once an angel,
now an abomination.
作者 Re:請問修飾子proteceted 和 (default) [Re:frank]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2003-12-08 23:47 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
frank wrote:

2.但當存取者為被存取者的子類別時,即可使用(存取)被存取對象的 protected member,


許多人都被這種說法誤導了。

應該說,protected 同 default 的規則,但多了一條:a derived class instance 可以 access 本身中定義於 super class 的 protected member,即使 derived class 與 super class 屬不同的 package。

不曉得各位有沒有了解我要表達的意思?!


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:請問修飾子proteceted 和 (default) [Re:Duncan]
item1394

松隆子



發文: 81
積分: 4
於 2003-12-08 23:52 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Duncan wrote:
許多人都被這種說法誤導了。

應該說,protected 同 default 的規則,但多了一條:a derived class instance 可以 access 本身中定義於 super class 的 protected member,即使 derived class 與 super class 屬不同的 package。

不曉得各位有沒有了解我要表達的意思?!

驚!!!被誤導?!
這可嚴重了, 難道大家沒發覺其中的錯誤嗎?


reply to postreply to post
Once an angel,
now an abomination.
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2003-12-09 00:33 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
item1394 wrote:
驚!!!被誤導?!
這可嚴重了, 難道大家沒發覺其中的錯誤嗎?

說誤導可能是過了頭,但那樣的說法的確是很模糊的。我想有不少的人像你一樣誤解其意思了,或是曾擁有錯誤的想法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package a;
class public A {
   int i = 0;   // (default);  
   protected int j = 0;  //  protected
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~
package b;
import a.A;
class D extends A{  
   public static void main(String[] args) {    
      A a = new A();    
      a.i = 2;     // fail  不在同一個package    
      a.j = 2;     // ok  不在同一個package,但是透過繼承後,protected可以被讀取   
                         =>    結果是 fail 但不知為何
   }
   
   public void foo() {
      System.out.println(i); // error
      System.out.println(j); // OK
   }
}


現在你明白 protected 和 default(package) 的差別嗎?


reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:請問修飾子proteceted 和 (default) [Re:Duncan]
item1394

松隆子



發文: 81
積分: 4
於 2003-12-09 01:06 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1
2
3
4
5
6
7
8
9
10
11
12
package b;
import a.A;
class D extends A
{
     public static void main(String argv[])
     {
          D d = new D();          
          d.i = 2     // fail  不在同一個package
          d.j = 2    //  ok    不在同一個package,但是透過繼承
                                後,子類別instance能夠存取 protected members    
     }
}


Is it right?


browser edited on 2003-12-09 01:53
reply to postreply to post
Once an angel,
now an abomination.
作者 Re:請問修飾子proteceted 和 (default) [Re:item1394]
Yoshi

塵世中一個迷途小書僮

版主

發文: 874
積分: 22
於 2003-12-09 01:16 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
item1394 wrote:
請問一下修飾子protected 和 (default)的區別
我覺得我對protected和(default)還是不太清楚
可以請各位前輩舉一下例子嗎?
謝謝....


我比較有興趣的是,有人在自己的程式當中使用過protected member嗎?
JDK中我只知道Calendar裡頭有用到protected,但我也不知道為什麼是protected
我自己寫程式從來沒有用到過protected member(不過我從來沒寫過大程式...)
有人有過親身的經驗,明顯的有需要使用protected member的case嗎?


reply to postreply to post
YOSHI!
go to first page go to previous page  1   2  go to next page go to last page
» JWorld@TW »  Java 新手區

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8