![](/img/trans.png)
[英]why cant we use a reference variable of super class to access methods of its subclass(methods not available in super class)?
[英]Use subclass member variable in super class methods?
我有一個基類和子類。 基類具有通用方法及其實現,我想在子類中使用它,但我想使用子類成員變量而不是超類。 我不想在子類中重寫相同的方法。 Java中有沒有辦法實現這一目標。
您可以使用一種方法來訪問成員並在子類中覆蓋它。
Class A{
public void DoStuff(){
int aux = getResource;
/*cool things with aux*/
}
protected int getResource(){
return internal_member;
}
private int internal_member;
}
Class B extends A{
private int another_member;
@Override
public int getResource(){
return another_member;
}
}
但是要考慮到這不會阻止人們追蹤A類直接使用該成員,最好為成員和getter創建一個基類。
正如前面概述的那樣,另一個選擇是將基類中的數據成員作為受保護的對象,並在子類中對其進行初始化:
Class A{
public void DoStuff(){
/*cool things with internal_member*/
}
protected List internal_member;
A(){internal_member = /*Set here a value*/}
}
Class B extends A{
B(){internal_member = /*Set a different value here! you can even declare a member and assign it here*/}
}
如果需要,可以將構造函數與參數一起使用。
您可以在成員變量上創建一個protected
setter,然后在子類的構造函數中覆蓋super變量的值:
class Animal {
private String voice = "Oooo";
protected void setVoice(String voice) {
this.voice = voice;
}
public void speak() {
System.out.println(this.voice);
}
}
class Dog extends Animal {
public Dog() {
setVoice("woof");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.