熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

protected:“友好的一種”

2013-11-15 11:35:12  來源: JSP教程 

  protected(受到保護的)訪問指示符要求大家提前有所認識首先應注意這樣一個事實為繼續學習本書一直到繼承那一章之前的內容並不一定需要先理解本小節的內容但為了保持內容的完整這兒仍然要對此進行簡要說明並提供相關的例子
  
  protected關鍵字為我們引入了一種名為繼承的概念它以現有的類為基礎並在其中加入新的成員同時不會對現有的類產生影響——我們將這種現有的類稱為基礎類或者基本類(Base Class)亦可改變那個類現有成員的行為對於從一個現有類的繼承我們說自己的新類擴展(extends)了那個現有的類如下所示
  
  class Foo extends Bar {
  
  類定義剩余的部分看起來是完全相同的
  
  若新建一個包並從另一個包內的某個類裡繼承則唯一能夠訪問的成員就是原來那個包的public成員當然如果在相同的包裡進行繼承那麼繼承獲得的包能夠訪問所有友好的成員有些時候基礎類的創建者喜歡提供一個特殊的成員並允許訪問衍生類這正是protected的工作若往回引用小節public接口訪問的那個Cookiejava文件則下面這個類就不能訪問友好的成員
  
  //: ChocolateChipjava
  // Cant access friendly member
  // in another class
  import cdessert*;
  
  public class ChocolateChip extends Cookie {
   public ChocolateChip() {
    Systemoutprintln(
     ChocolateChip constructor);
   }
   public static void main(String[] args) {
    ChocolateChip x = new ChocolateChip();
    //! xfoo(); // Cant access foo
   }
  } ///:~
  
  對於繼承值得注意的一件有趣的事情是倘若方法foo()存在於類Cookie中那麼它也會存在於從Cookie繼承的所有類中但由於foo()在外部的包裡是友好所以我們不能使用它當然亦可將其變成public但這樣一來由於所有人都能自由訪問它所以可能並非我們所希望的局面若象下面這樣修改類Cookie
  
  
  public class Cookie {
   public Cookie() {
    Systemoutprintln(Cookie constructor);
   }
   protected void foo() {
    Systemoutprintln(foo);
   }
  }
  
  那麼仍然能在包dessert裡友好地訪問foo()但從Cookie繼承的其他東西亦可自由地訪問它然而它並非公共的(public)
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19251.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.