2012-05-26 90 views
0

我想從子引用變量訪問父類的成員函數。使用函數覆蓋時如何訪問父類的函數

我的代碼:

class Emp 
{ 
static String Cname="Google"; 
int salary ; 
String Name; 

void get(String s1,int s2) 
{ 
    Name=s1; 
    salary=s2; 
} 
void show() 
{ 
    System.out.println(Name); 
    System.out.println(salary); 
    System.out.println(Cname); 

} 

} 
public class Practice extends Emp{ 

/** 
* @param args 
*/ 
void show() 
{ 
    System.out.println("in Child class"); 
} 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Practice e=new Practice(); 
    e.show(); 
    e.get("Ratan",200000); 
    ((Emp)e).show(); 
} 

} 

輸出是:

in Child class 
in Child class 

這意味着兩次孩子的成員函數被調用。有什麼辦法來解決這個問題?

回答

0

你不能真正做你想做的事情。正如其他人所說,在子類中,您可以使用super.methodName()調用基類方法;所以你可以在你的Practice類中編寫一個方法,例如:showBase(){super.show(); }但是這首先會有點挫敗show()的重點。

您可能想要改變基類中某個方法的行爲,並使用覆蓋或在子類中有額外的方法來豐富基類的功能。嘗試做你的建議表明你需要重新考慮你的設計。

+0

謝謝我得到了它。 –

0

您必須調用超類的方法,如下所示: super.show();

0

在孩子班之外是不可能的。 (在子類中使用super.show())。

+0

java.lang.NoSuchMethodException –

+0

抱歉反射無效,請參閱http://stackoverflow.com/questions/5411434/how-to-call-a-superclass-method-using-java-reflection – mart