hanzhu3366 发表于 2008-5-20 11:37

两个简单的问题!!!!!

[code]package hehe_1;

public class MethodOverride {
    public static void main(String[] args) {

        SubClass s = new SubClass();
        s.fun();
    }
}


class SuperClass {
    int i = 1;
    public void fun() {
        System.out.println("super");
        System.out.println("父类的i=" + i);

    }
}


class SubClass extends SuperClass {
    int i = 2;
    public void fun()

    {
        System.out.println("Sub");
        System.out.println("子类的i=" + i);
        super.fun();
    }
}[/code]


问题一:为什么先执行子类,而不是父类呢?  
问题二:子类的super有什么作用?

devilclove 发表于 2008-5-20 12:11

SubClass是子类吧

wuhui5201717 发表于 2008-5-20 12:35

子类先重写了父类的方法
然后再调用了父类的方法吧
因为Main()方法实列化的是子类,所以按顺序也是先执行子类的方法

hwoarangzk 发表于 2008-5-20 13:00

LZ,在你的主类里面,你建立了一个子类的实例s,然后调用了s的方法fun。那么看子类的fun
方法,先是打印出Sub和子类的i=,然后通过super再调用父类的fun方法。所以结果看到的是先子类再父类。super可以看成父类。

hanzhu3366 发表于 2008-5-20 13:06

谢谢大家!

super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时)

zw_java 发表于 2008-5-21 11:57

回答一:子类重写父类run()方法,所以执行子类方法;重写发生在子类拥有特定的行为,不继承父类的行为;
回答二:super()方法是让子类使用父类的构造方法;

xiaoyu2006 发表于 2008-5-21 22:29

各位前面说了按顺序执行,如果把super()放在前面就会先执行父类了!

liun5210 发表于 2008-5-24 14:15

super在什么情况下才能被执行?

yin8489629 发表于 2008-5-24 16:15

可能是子类对父类FUN方法覆盖了 多态问题

页: [1]

编程论坛