Պոլիմորֆիզմ (ծրագրավորում)
Այս հոդվածն աղբյուրների կարիք ունի։ Դուք կարող եք բարելավել հոդվածը՝ գտնելով բերված տեղեկությունների հաստատումը վստահելի աղբյուրներում և ավելացնելով դրանց հղումները հոդվածին։ Անհիմն հղումները ենթակա են հեռացման։ |
Ծրագրավորման լեզուներում և տիպերի տեսությունում պոլիմորֆիզմ(Հունարեն πολύς, պոլիս, "շատ" և μορφή, մորֆ, "ձև") կոչվում է տարբեր տեսակի տվյալները կարգավորելու ունակությունը։ Գոյություն ունեն մի քանի տեսակի պոլիմորֆիզմներ։ Երկու ամենատարբեր տեսակի պոլիմորֆիզմները 1967 թ.-ին նկարագրվել են Քրիսթոֆեր Սթրեչիի կողմից։ Մեկը հատուկ պոլիմորֆիզմն է (կամ ad hoc պոլիմորֆիզմ), մյուսը՝ պարամետրիկ պոլիմորֆիզմը։ Հակիրճ՝ հատուկ պոլիմորֆիզմը նկարագրվում է «նման ինտերֆեյսով շատ իրագործումներ» սկզբունքով, իսկ պարամետրիկը՝ «մեկ իրագործում ընդհանրացված ինտերֆեյսով» պրինցիպով։
Այլ կերպ որպես պոլիմորֆիզմի օրինակներ կարող ենք բերել գերբեռնումը (overloading) և վերարժեքավորումը (overriding)։
Մեթոդի գերբեռնում
[խմբագրել | խմբագրել կոդը]Մեթոդի գերբեռնման ժամանակ ստեղծվում են նույն անվանումով և վերադարձվող տիպով, սակայն տարբեր պարամետրերով մեթոդներ։
static void compare(int a, int b){
if(a > b){
System.out.printf("%d is greater than %d.", a, b);
}
else if(a < b){
System.out.printf("%d is greater than %d.", b, a);
}
else {
System.out.println("The numbers are equal.");
}
}
Սա երկու թվերի համեմատման մեթոդ է
static void compare(int a, int b, int c){
if(a > b && a > c){
System.out.printf("%d is greater than %d and %d.", a, b, c);
}
else if(b > a && b > c){
System.out.printf("%d is greater than %d and %d.", b, a, c);
}
else if (c > a && c > b){
System.out.printf("%d is greater than %d and %d.", c, a, b);
}
}
Սա էլ նույն մեթոդը, բայց արդեն երեք թվերի համար
Մեթոդի վերարժեքավորում
[խմբագրել | խմբագրել կոդը]Մեթոդը կարող ենք վերարժեքավորել, երբ որևէ դասից ժառանգված ենթադասում օգտագործում ենք մայր դասի մեթոդը՝ փոխելով նրա պարունակությունը։
public class Person {
void sayGetting (){
System.out.println("Hello, I'm a person!");
}
}
Այստեղ Person դասն ունի մեթոդ, որն արտածում է "Բարև, ես մարդ եմ" հաղորդագրությունը։
class Student extends Person{
@Override
void sayGetting() {
System.out.println("Hello, I'm a student!");
}
}
Իսկ այստեղ Student դասը ժառանգելով Person դասը և նրա sayGetting մեթոդը արտածում է "Բարև, ես ուսանող եմ" հաղորդագրությունը։