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