Ի՞նչ մեխանիզմներ կան 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; } } -
Կատարման ժամանակի բազմակողմանիություն (դինամիկ բազմակողմանիություն): Իրականացվում է մեթոդների վերագրումով (method overriding): Տարածածկ դասի մեթոդը նույն ստորագրությունն ունի, ինչ վերին դասի մեթոդը և ներկայացնում է իր սեփական իրականացմանը: Որ մեթոդը կանչել, որոշվում է գործարկման ժամանակ՝ կախված օբյեկտի իրական տիպից:
class Animal { public void sound() { System.out.println("Կենդանին ձայն է հանում"); } } class Dog extends Animal { // sound մեթոդի վերագրում @Override public void sound() { System.out.println("Շունը հաչում է"); } } class Cat extends Animal { // sound մեթոդի վերագրում @Override public void sound() { System.out.println("Մկնիկը մյուում է"); } } -
Հղումներ վերին դասի / ինտերֆեյսի: Տարածածկ դասերի օբյեկտները կարող են վերագրել վերին դասերի կամ ինտերֆեյսների հղումներին, որոնք նրանք իրականացնում են: Սա թույլ է տալիս միատարր կերպով մշակել տարբեր տիպերի օբյեկտներ ընդհանուր հղումով: Այդպիսի հղումից վերագրած վերագրած մեթոդի կանչը հանգեցնում է իրական օբյեկտի տիպի տարբերակին:
Animal myAnimal = new Dog(); // Dog օբյեկտի վերագրում Animal տիպի հղում myAnimal.sound(); // Կոչվում է Dog դասի վերագրած sound() մեթոդը