Junior
Ko var mainīt metožu pārlādē programmatūrā?
sobes.tech AI
Atbilde no AI
Metodes pārklāšana (method overloading) var tikt mainīta:
- Parametru skaits: Metodes ar vienādu nosaukumu var būt dažāds formālo parametru skaits.
- Parametru tipi: Metodes ar vienādu nosaukumu un vienādu parametru skaitu var atšķirties pēc šo parametru tipiem.
- Parametru tipu secība: Ja metodēm ir vienāds parametru skaits un tipi, bet tie ir sakārtoti citādi, tas arī tiek uzskatīts par pārklāšanu.
Java piemērs:
// Klase ar pārklātām metodēm
class Calculator {
// Metode saskaitīt divus veselus skaitļus
public int add(int a, int b) {
return a + b;
}
// Pārklāta metode: saskaitīt trīs veselus skaitļus
public int add(int a, int b, int c) {
return a + b + c;
}
// Pārklāta metode: saskaitīt divus skaitļus ar peldošo punktu
public double add(double a, double b) {
return a + b;
}
// Pārklāta metode: saskaitīt veselīgu skaitli un skaitli ar peldošo punktu
public double add(int a, double b) {
return a + b;
}
// Pārklāta metode: saskaitīt skaitli ar peldošo punktu un veselīgu skaitli
public double add(double a, int b) {
return a + b;
}
}
Ko nedrīkst mainīt, pārklājot metodes:
- Atgriešanas vērtība: Divas metodes ar vienādu nosaukumu un signatūru (skaitļi, tipi un secība) nedrīkst atšķirties tikai pēc atgriešanas vērtības tipa.
- Pieejas modifikatori: Pieejas modifikatori (public, private, protected, default) neietekmē pārklāšanu.
static``-aklātbūtne vai neklātbūtne: Nav iespējams pārklāt statisku metodi, ja nav definēta nestatiskā metode ar tādu pašu signatūru, vai otrādi.- Izņēmumu saraksts: Izņēmumu saraksts nav daļa no metodes signatūras, pēc kuras kompilators atšķir pārklātas metodes.
Salīdzinājums starp pārklāšanu un pārrakstīšanu (overriding):
| Raksturlielums | Pārklāšana (Overloading) | Pārrakstīšana (Overriding) |
|---|---|---|
| Kur notiek | Vienā klasē vai klases hierarhijā | Bērklasē |
| Metodes nosaukums | Tas pats | Tas pats |
| Signatūra | Atšķirīga (skaitļi, tipi, secība) | Tas pats |
| Atgriešanas vērtība | Var būt atšķirīga (bet tas nav vienīgais atšķirības veids) | Jābūt tāda pati vai kovarianta (objektiem) |
| Mērķis | Nodrošināt vairākus variantus vienas darbības dažādu datu tipu vai argumentu skaita gadījumā | Mainīt mantojamās metodes uzvedību mantojošajā klasē |
| Metodes saistība | Neatkarīgas metodes | "Ir" saistība (mantošana) |
| Polimorfisms | Kompilācijas laikā polimorfisms (statiskā) | Darbības laikā polimorfisms (dinamisks) |