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.fun()中的super是什么?

解决方案 »

  1.   

    super指的是直接父类,即super.fun()将调用父类SuperClass中的fun()
      

  2.   

    是调用父类方法fun。
    其实这个时候SubClass类中是有两个fun方法的(this.fun和super.fun)。
    当从外部调用fun方法的时候,SubClass的fun方法就把父类的fun方法隐藏了。
    如果子类不重写fun方法的话,则查找它的父类的fun方法。
      

  3.   

    super是子类调用父类,this用在同一个类内
      

  4.   

    你这个程序没报错?
    public void fun()
    {
    System.out.println("Sub");
    System.out.println("子类的i="+i);
    super.fun();

    super.fun()应该放在方法中的第一行。
      

  5.   

    super()是调用父类方法,这里是调用父类fun()方法
      

  6.   

    可以参考ZangXT的博文:无聊:正确的理解this 和 super 
      

  7.   

    大家都讲的不错
    super是调用父类中的方法,this是调用类本身的方法或属性
    当使用super调用父类的构造方法时,必须得放到调用方法的程序代码的第一行
      

  8.   

    super调用父类构造函数,它引用的是当前对象父类类型的对象
      

  9.   


    ZangXT的这篇博文不错,有水平。钻研精神&&分享心理一般是大师所有。
      

  10.   

    希望更多人都能成为大师(钻研精神&&分享心理)希望在不久的将来,中国会有自己的James Gosling希望.....