我想从子的引用变量访问父的成员函数。
我的代码:
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 :(得分:0)
你必须像这样调用超类的方法: super.show();
答案 1 :(得分:0)
在儿童班以外是不可能的。 (在子类中使用super.show())。
答案 2 :(得分:0)
你无法真正做到你想要做的事情。正如其他人所说,在子类中,您可以使用super.methodName()调用基类方法;
所以你可以在你的Practice类中编写一个方法:showBase(){super.show();但是,这有点打败了首先覆盖show()的观点。
您要么想要使用覆盖更改基类中方法的行为,要么在子类中使用额外的方法来丰富基类的功能。尝试按照您的建议进行操作表明您需要重新考虑您的设计。