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

这意味着两次调用孩子的成员函数。解决这个问题的方法是什么?

4

3 回答 3

0

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

于 2012-05-26T13:09:44.503 回答
0

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

于 2012-05-26T13:12:19.773 回答
0

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

所以你可以在你的 Practice 类中编写一个方法: showBase() { super.show(); 但这在某种程度上违背了首先覆盖 show() 的观点。

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

于 2012-05-26T13:28:04.660 回答