super的第二种形式的用法与this相似,只不过他引用的是子类的超类.这种用法基本形式如下所示:
super.member
这里,member是方法或实例变量.
这种形式多用于子类的成员名隐藏了超类中同名成员的情况.考虑下面这个层次结构:
public class test2 { // @param args public static void main(String args[]) { childClass $obj = new childClass(); System.out.println($obj.publicReturnInt()); System.out.println($obj.superPublicReturnInt()); } } class childClass extends parentClass { childClass() { super(100); System.out.println("childClass init"); } int publicReturnInt() { return 0; } int superPublicReturnInt() { return super.publicReturnInt(); } } class parentClass { private int num; parentClass(int n) { System.out.println("parentClass init"); num = n; } int publicReturnInt() { return returnInt(); } private int returnInt() { return num; } }
输出:
parentClass init childClass init 0 100
尽管childClass中的成员方法隐藏了parentClass中的publicReturnInt()方法,但是super允许访问定义于超类中的publicReturnInt()方法.