Вторая форма super напоминает действие ссылки this с тем отличием, что super обращается к объекту суперкласса. Общий формат использования второй формы super имеет вид:
super.имя_компоненты;
При этом компонента может быть либо данным, либо методом класса. Эта форма используется в том случае если компонента суперкласса, к которой следует обратиться, скрыта соответствующей (одноименной) компонентой подкласса. Ниже приведен пример демонстрирующий использование второй формы super.
class A // суперкласс А
{ protected int a;
A() { } // конструктор без параметров
A(int aa) // конструктор c 2 параметрами
{ a = aa; // создание нового объекта
}
A(A ob) // конструктор параметром объект
{ a = ob.a; // построение клона объекта
}
void show()
{ System.out.println("supperclass a = " + a);
}
}
class B extends A // подкласс В
{ int a;
B() { } // конструктор без параметров
B(int aa, int bb) // конструктор с параметрами
{ super(aa);
a = bb;
}
B(B ob) // конструктор параметром объект
{ super(ob);
a = ob.a; // построение клона объекта
}
void show()
{ super.show();
System.out.println("subclass a= " + a);
}
void fun()
{ int a;
a = this.a + super.a;
System.out.println("a(supperclass)+a(subclass) = " + a);
}
}
class start
{ public static void main()
{ B ob = new B(1,2);
ob.show();
ob.fun();
}
}