2012-10-16 98 views
-2

考慮以下超類和子類對,如何訪問超類成員?訪問具有相同變量名稱的不同類型的Super成員

class Super { 
    Number aNumber; 
} 

class Subbie extends Super { 
    Float aNumber; 
} 
+1

我強烈建議你去通過Inheritance'的'基礎。你可以從這個教程開始: - http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html –

+0

來吧 - 問題不是那麼糟糕......它是公平的,指向教程 - 但是-3? – dngfng

+1

@dngfng:這顯然是一個作業問題的直接帖子,沒有OP的任何努力。 – geoffspear

回答

0

您可以訪問超級會員super.aNumber,只要它在子類的實例。

0

鑑於該屬性沒有可見性修飾符,它被假定爲包私有。 Subbie將只能訪問SuperaNumber,如果它們在同一個包中。

如果是這樣,您可以像這樣訪問它:super.aNumber。注意super這裏是一個關鍵字,隱式指向超類,並且與名爲Super的超類沒有任何關係。

class Super { 
    Number aNumber; 
} 

class Subbie extends Super { 
    Float aNumber; 
    public Number getNumberFromSuper() { 
     return super.aNumber; 
    } 
} 

我建議採取對優秀的Java讀取在線教程,例如:

0

您可以定義不同的關鍵字字段被稱爲訪問修飾符(檢查最後的鏈接以獲得關於此主題的詳細解釋),每個e定義訪問/使用的範圍。我將專注於這個領域的解釋。

Public:每個人都可以訪問。此訪問修飾符是定期與方法一起使用,而不是與字段一起使用。在Java中,鼓勵使用getset方法來訪問字段的值並分別對其進行更改。您可以訪問一個字段是這樣的:

AClass c = new AClass(); 
c.publicField = 3; //Setting a value in a field, int in this case 
int sum = c.publicField + 4; //Obtaining the value of publicField to use it 

私人: Definining一個字段作爲私人使其可見只類本身,這意味着一類的邊界之外沒有人能夠看到這個領域。 Java中常見的類通常具有私有字段和訪問器(get & set方法)。

public class AClass { 

    public int publicField; 
    private String privateField = "Can't see me!"; 

    public String getPrivateField() { 
     return privateField; 
    } 

    public void setPrivateField(String newValue) { 
     privateField = newVaule; 
    } 

} 

getter和setter讓你控制訪問您的私人領域,允許,如果你需要它,你要更新該字段的值或返回值之前,準備在一個特定的字段之前執行任何你想要的邏輯。

受保護:只有同一包中的類和類的子類才能訪問使用此關鍵字定義的字段。在您的情況下,Subbie可以訪問Superprotected字段,並且與Super相同的程序包中的任何其他類也可以訪問這些字段。

禁止訪問修飾符:這是您當前的情況,您的問題的答案強烈依賴於您的類的結構。如果他們在同一個包中,則可以從Subbie訪問Super的字段。否則,如果Subbie位於另一個包中,則將無法訪問該字段。該字段被引用爲Package-Private

你可能要檢查一些相關的文章:

  1. Inheritance in Java
  2. Controlling the Access to Members of a Class
相關問題