java中super的提问

来源:百度知道 编辑:UC知道 时间:2024/09/25 14:26:31
class a{
void f(){System.out.println("a");}
void g(){System.out.println("b");
System.out.println("a");}}

class b extends a{
void f(){System.out.println("c");
super.g();
super.g();
System.out.println("d");}}

public class c{
public static void main(String args []){
b m=new b();
m.f();}}
请高手看以上程序,m调用的是子类的方法f。先打印c,然后调用父类的方法,打印b a 最后打印d,可是运行结果为什么是cbabad啊?谢谢了!!
什么叫调用了两次g啊?能不能说明白一点啊,谢谢了!

你调用两次super.g(),当然是ababad了。

class a{
void f(){System.out.println("a");}
void g(){System.out.println("b"); }
}

class b extends a{
void f(){System.out.println("c");
super.g();
super.f();
System.out.println("d");}}

public class c{
public static void main(String args []){
b m=new b();
m.f();}}
这样应该OK了
试试