Page 18 - 4657
P. 18
Ключове слово super
У прикладі з класом Point3D частково повторювався код,
вже згаданий в суперкласі. Згадаєте, як у другому конструкторі
ми використовували this для виклику першого конструктора
того ж класу. Аналогічним образом ключове слово super
дозволяє звернутися безпосередньо до конструктора суперкласу
(у Delphi / С++ для цього використовується ключове слово
inherited).
class Point3D extends Point { int z;
Point3D(int x, int у, int z) {
super(x, y); // Тут ми викликаємо конструктор
суперкласу this.z=z;
public static void main(String args[]) {
Point3D p = new Point3D(10, 20, 30);
System.out.println( " x = " + p.x + " y = " + p.y
+
" z = " + p.z);
} }
От результат роботи цієї програми:
С:\> java Point3D
x = 10 у = 20 z = 30
Заміщення методів
Новий підклас Point3D класи Point успадковує реалізацію
методу distance свого суперкласу (приклад PointDist.java).
Проблема полягає в тім, що в класі Point уже визначена версія
методу distance(mt х, int у), що повертає звичайну відстань між
точками на площині. Ми повинні замістити (override) це
визначення методу новим, придатним для випадку тривимірного
простору. У прикладі, проілюстроване і сполучення
(overloading), і за-міщення (overriding) методу distance.
class Point { int х, у;
Point(int х, int у) {
this.x = х;
this.у = у;
16