Sobes.tech
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``-a klā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)