使用函数重写时如何访问父类的函数

时间:2012-05-26 13:06:19

标签: java

我想从子的引用变量访问父的成员函数。

我的代码:

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

表示正在调用子成员函数的两次。解决这个问题的方法是什么?

3 个答案:

答案 0 :(得分:0)

你必须像这样调用超类的方法:     super.show();

答案 1 :(得分:0)

在儿童班以外是不可能的。 (在子类中使用super.show())。

答案 2 :(得分:0)

你无法真正做到你想要做的事情。正如其他人所说,在子类中,您可以使用super.methodName()调用基类方法;

所以你可以在你的Practice类中编写一个方法:showBase(){super.show();但是,这有点打败了首先覆盖show()的观点。

您要么想要使用覆盖更改基类中方法的行为,要么在子类中使用额外的方法来丰富基类的功能。尝试按照您的建议进行操作表明您需要重新考虑您的设计。