疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

父类实例的super引用1—[疯狂java讲义]


 

父类实例的super引用
 
         如果需要在子类方法中调用父类被覆盖的实例方法,可使用super作为调用者来调用父类被覆盖的实例方法。为上面的Ostrich类添加一个方法,在这个方法调用Bird中被覆盖的fly方法:
 
Public void callOverridedMethod
{
//在子类方法通过super显示调用父类被覆盖的实例方法。
Super.fly();
}
 
         通过callOverridedMethod方法的帮助,就可以让Ostrich对象既可以调用覆盖的fly方法,也可以调用Bird类中被覆盖的fly方法(调用callOverridedMethod方法即可)。
 
         super是Java提供的一个关键字,它是直接父类对象的默认引用。例如上面Bird类中定义的fly方法是一个实例方法,需要通过Bird对象来调用该方法,而callOverridedMethod方法通过super就可以调用这个方法,可见super引用了一个Bird对象。
 
          正如this不能出现在static修饰的方法中一样,super也不能出现在static的方法中。static修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象,也就不存在对应的父对象了,因而super引用也就失去了意义。
 
          与this引用类似的是,如果在构造器中使用super引用,则super引用指向该构造器正在初始化的对象所对应的父类对象。(摘自[疯狂java讲义])