Кадом механизмҳои иҷрои полиморфизм дар Java вуҷуд доранд?
sobes.tech AI
Ҷавоб аз AI
-
Тавсия вақти полиморфизми (статик полиморфизм): Бо ёрии методҳои боркунии (method overloading). Методҳо номи якхела доранд, аммо имзоҳои гуногун (сони, навъи ё тартиби аргументҳо).
class Calculator { // Боркунии методи add public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } -
Тавсия вақти иҷро (динамик полиморфизм): Бо ёрии override кардани методҳо (method overriding). Метод дар синфи зер дорои ҳамон имзо бо метод дар синфи боло ва пешниҳоди иҷрои худ мебошад. Қарор дар бораи он ки кадом метод даъват шавад, дар вақти иҷро, вобаста ба навъи воқеии объект гирифта мешавад.
class Animal { public void sound() { System.out.println("Ҳайвон овоз медиҳад"); } } class Dog extends Animal { // Override кардани метод sound @Override public void sound() { System.out.println("Саг овоз медиҳад"); } } class Cat extends Animal { // Override кардани метод sound @Override public void sound() { System.out.println("Маска овоз медиҳад"); } } -
Референсҳо ба синфи боло / интерфейс: Объектҳои синфи зер метавонанд ба референсҳои синфи боло ё интерфейсҳо, ки онҳо иҷро мекунанд, таъин шаванд. Ин имкон медиҳад, ки объектҳои гуногунро тавассути референси умумӣ баробар коркард кунанд. Дар чунин референс, даъвати методи overrideшуда ба версияи методи синфи воқеии объект оварда мерасонад.
Animal myAnimal = new Dog(); // Таъин кардани объекти Dog ба референси синфи Animal myAnimal.sound(); // Даъвати методи overrideшуда sound() аз синфи Dog