考慮以下超類和子類對,如何訪問超類成員?訪問具有相同變量名稱的不同類型的Super成員
class Super {
Number aNumber;
}
class Subbie extends Super {
Float aNumber;
}
考慮以下超類和子類對,如何訪問超類成員?訪問具有相同變量名稱的不同類型的Super成員
class Super {
Number aNumber;
}
class Subbie extends Super {
Float aNumber;
}
您可以訪問超級會員super.aNumber
,只要它在子類的實例。
鑑於該屬性沒有可見性修飾符,它被假定爲包私有。 Subbie
將只能訪問Super
的aNumber
,如果它們在同一個包中。
如果是這樣,您可以像這樣訪問它:super.aNumber
。注意super
這裏是一個關鍵字,隱式指向超類,並且與名爲Super
的超類沒有任何關係。
class Super {
Number aNumber;
}
class Subbie extends Super {
Float aNumber;
public Number getNumberFromSuper() {
return super.aNumber;
}
}
我建議採取對優秀的Java讀取在線教程,例如:
您可以定義不同的關鍵字字段被稱爲訪問修飾符(檢查最後的鏈接以獲得關於此主題的詳細解釋),每個e定義訪問/使用的範圍。我將專注於這個領域的解釋。
Public:每個人都可以訪問。此訪問修飾符是定期與方法一起使用,而不是與字段一起使用。在Java中,鼓勵使用get
和set
方法來訪問字段的值並分別對其進行更改。您可以訪問一個字段是這樣的:
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
可以訪問Super
的protected
字段,並且與Super
相同的程序包中的任何其他類也可以訪問這些字段。
禁止訪問修飾符:這是您當前的情況,您的問題的答案強烈依賴於您的類的結構。如果他們在同一個包中,則可以從Subbie
訪問Super
的字段。否則,如果Subbie
位於另一個包中,則將無法訪問該字段。該字段被引用爲Package-Private。
你可能要檢查一些相關的文章:
我強烈建議你去通過Inheritance'的'基礎。你可以從這個教程開始: - http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html –
來吧 - 問題不是那麼糟糕......它是公平的,指向教程 - 但是-3? – dngfng
@dngfng:這顯然是一個作業問題的直接帖子,沒有OP的任何努力。 – geoffspear