我想在一个子类里写一个函数,返回该类的超类的引用,为什么用 return super 不行,会出现编译错误!而用 return this 不会出现编译错误 我想问一下super和this在同一个类中到底有哪些使用上的不同?
代码如下: public class testmethodoverload { public static void main(string[] args) { sub sub = new sub(); super sup = new super(); sub.print(); // sub.super.print(); // sub.getsuper().print(); } }
class super { void print() { system.out.println( "super class! "); } }
class sub extends super { void print() { system.out.println( "sub class! "); super.print(); } super getsuper() { return this; //return super; // 错误信息如下: // testmethodoverload.java:31: 需要 '. ' // return super; // ^ // 1 错误 } }
发表于:2007-01-08 22:08:301楼 得分:0
"在一个子类里写一个函数,返回该类的超类的引用 "
我觉得这句话是错的。
一个类的实例创建以后,它的引用就固定了。只要这个实例存在,这个引用就一定指向这个实例。
“返回该类的超类的引用”,这个说法不恰当。可以说:以它超类的类型返回这个实例的引用。也就是说,返回以后,看上去是个super类的实例,其实还是子类的实例。这个时候,return this 就对了。