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
   13   14   15   16   17   18   19   20   21   22   23