2017-06-10 78 views
-1

我想了解爲什麼我們無法訪問不在同一個包中的另一個類女兒(使用繼承)的類的受保護成員。 就像是:具有繼承權的受保護成員

package library ; 
class Book { 
    protected String author ; 
    } 

package building ; 
class CourseBook extends Book { 
    public CourseBook() { 
      Book book = new Book() ; 
      book.author = "ABC"; 
      } 
    } 
+0

這應該是什麼語言? 'Class','Public','Protected'和'Package'應該是小寫字母。很清楚,代碼不會編譯,請顯示代碼*將*編譯來演示您的實際問題。 – luk2302

+0

您需要正確拼寫關鍵字!你發佈的內容不會被編譯。什麼是「dauther」?誰告訴你,受保護的成員不能從不同的包中訪問?這根本不是事實。任何擴展類都可以訪問其超類的「受保護」成員。我建議你學習Java教程和JLS。閱讀精細手冊。 –

回答

0

受保護的訪問修飾符是包內包外,但通過繼承才能訪問。

受保護的訪問修飾符可應用於數據成員,方法和構造函數。它不能應用於課堂上。 類先擴展它應該可見。適用適當的訪問修飾符

public class Book { 
     protected String author; 
    } 

class CourseBook extends Book { 
    public CourseBook() { 
      author = "ABC"; 
      } 
    } 
0

您可以訪問超類的保護成員的一個子類,但僅在inheritance方式,E,G:

Public CourseBook() { 
    author = "ABC"; 
} 

您可以像訪問自己班級的成員那樣訪問。但是,您無法像訪問public成員(通過使用.運算符)那樣訪問它,因爲受保護的成員在繼承類層次結構之外不可見。