public class methodoverride56{
    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啊。。难道是superclass的简写请大家指教啊。。

解决方案 »

  1.   

    class subclass extends superclass{
    ======================================
    super表示extedns后面的那个类的名字
    再这里是指superclass
      

  2.   

    super的意思是调用父类的方法!
      

  3.   

    super如果指对象像super.fun(),就是指父类的一个对象;如果是方法,像super()就表示调用父类的构造方法。
      

  4.   

    subclass 从超类继承了 fun() 方法并对其进行了覆盖,在子类 fun() 中使用 super.fun() 是调用继承下来但被覆盖的 superclass 的 fun() 方法。
      

  5.   

    父类superclass没有定义对象叫super吧???父类superclass也没有一个构造方法吧??晕的很啊。
      

  6.   

    super在子类中代表父类 就象this在类中代表类本身一个道理
    super在子类中可以引用父类的方法
      

  7.   

    郁闷。。误会啊。。原来super是关键字啊
    this通常指代当前对象,super通常指代父类。学的不系统。。大家见笑了。。哈哈哈哈