Page 20 - 4657
P. 20

System.out.println("p1.distance(p2) = " +
       p1.distance(p2));
       System.out.println("p1.distance(4, 6) = " +
       p1.distance(4, 6));
       System.out.println("p1.distance(p) = " +
       p1.distance(p));
       } }
           Нижче приводиться результат роботи цієї програми:

       С:\> Java Point3DDist
       p1 = 30, 40, 10
       р2 = 0, 0, 0
       р = 4, 6
       p1.distance(p2) = 50.9902
       p1.distance(4, 6) = 2.23607
       p1.distance(p) = 2.23607
           Зверніть  увагу  -  ми  одержали  очікувану  відстань  між
       тривимірними  крапками  і  між  парою  двовимірних  крапок.  У
       прикладі    використовується      механізм,     що    називається
       динамічним призначенням методів (dynamic method dispatch).


            Динамічне призначення методів

           Давайте  як  приклад  розглянемо  два  класи,  у  яких  мають
       просте споріднення підклас / суперклас, причому єдиний метод
       суперкласу заміщений у підкласі.

       class A { void callme() {
       System.out.println("Inside A's callrne method");
       class У extends A { void callme() {
       System.out.println("Inside B's callme method");
       } }
       class Dispatch {
       public static void main(String args[]) {
       A a = new B();
       a.callme();
       } }
           Зверніть  увагу  -  усередині  методу  main  ми  оголосили
       перемінну а класу А, а проініціалізували її посиланням на об'єкт
       18
   15   16   17   18   19   20   21   22   23   24   25