Полиморфизм

Служит для создания расширяемых программ (добавления новых возможностей). Полиморфизм – это различное действие методов, которые вызываются через базовый класс для разных наследников.

class Note {

private String noteName;

private Note (String nN) {noteName = nN;}

public static final Note MIDDLE_C = new Note (“Middle C”),

C _SHARP = new Note (“C Sharp”)……;

public String to String () {return noteName;}

}

class Instrument {

public void play (Note n) {

System.out.println (“Instrument.play ()”);

}

}

public class Wind extends Instrument {

public void play (Note n) {

System.out.println (“Wind.play ()” + n);

}

}

public class Music

public static void tune (Instrument i) {

i.play (Note.MIDDLE_C);

}

public static void main (String [] args){

Wind flute = new Wind ();

tune (flute); // upcasting (приведение) к базовому классу

}

}

Выполняется метод того класса к которому реально относится объект. В данном случае метод класса Wind. Это называется полиморфизм. Будет напечатано: Wind. Play () Middle C.

Пример upcasting через оператор return:

private Random rand = new Random (47);

public Shape next (){

switch (rand.next Int(3)) {

default:

case 0: return new Circle ();

case 1: return new Square ();

case 2: return new Triange ();

}

______________________________________________________

Shape s = new Circle ();

s.draw (); / вызывается Circle.draw

upcasting может уменьшить количество доступных у класса методов (у Wind их может быть больше, но все методы Instrument есть всегда).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: