本帖最后由 箫庐 于 2011-12-9 17:11 编辑
调用本类中的对象,可以用this. 调用父类的覆盖函数,用super. 但是
如果爷爷类,父类,子类中都存在覆盖函数,用super.super. 无法调用爷爷类中的覆盖函数 又另外在父类中的覆盖方法前加super. 也不能实现.
请问是什么原因如何实现调用爷爷类中的方法?
例:
class Text
{
public static void main(String[] args)
{
System.out.println("Hello Java基础班20111130!!!");
work(new Teacher());
work(new Coder());
// work(new Person()); //报错,在Person中找不到code()方法;
}
static void work(Coder c){
c.code();
}
}
class Person {
void sleep(){
System.out.println("睡觉");
}
}
class Coder extends Person {
public void sleep(){
System.out.println("就睡2个小时");
}
void code(){
System.out.println("程序员编程");
super.sleep(); // 调用父类被覆盖的方法
}
}
class Teacher extends Coder {
public void sleep(){
System.out.println("睡16个小时");
}
void code(){
System.out.println("老师编程");
super.sleep(); //调用的是其父类Coder中的方法;不是爷爷类;怎么调用爷爷类呢?
super.super.sleep(); //报错,晕了;
}
} |
|