学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
轻松建立自己的群组,招兵买马   
发新话题
打印

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

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

复制内容到剪贴板
代码:
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();
    }
}
问题一:为什么先执行子类,而不是父类呢?  
问题二:子类的super有什么作用?

TOP

SubClass是子类吧
敢于直面淋漓的鲜血,敢于正视惨淡的人生

TOP

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

TOP

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

TOP

谢谢大家!

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

TOP

回答一:子类重写父类run()方法,所以执行子类方法;重写发生在子类拥有特定的行为,不继承父类的行为;
回答二:super()方法是让子类使用父类的构造方法;
暮色苍茫看劲松,乱云飞渡仍从容

TOP

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

TOP

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

TOP

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

TOP

发新话题