Sobes.tech
Junior

Kad metode tiek uzskatīts par pārrakstītu?

sobes.tech AI

Atbilde no AI

Metode uzskata par pārdefinētu šādos gadījumos:

  1. Tas ir paziņots bērnu klasē.
  2. Tam ir tāds pats nosaukums kā vecāku klases metodam.
  3. Tam ir tāda pati signatūra (parametru skaits un tipi) un parametru secība.
  4. Tam ir atgriešanas tips, kas ir saderīgs ar vecāku klases metodes atgriešanas tipu (kovarianti, ja piemērojams).
  5. Tam ir tāds pats vai plašāks piekļuves modifikators nekā vecāku klases metodam (lielākajā daļā objektorientētu valodu).
  6. Vecāku metode ir paziņota kā virtuāla, abstrakta vai saskarnes (interface) metode (valodās, kurās ir nepieciešams skaidri norādīt pārklāšanas iespēju, piemēram, C# ar virtual atslēgvārdu).

Java piemērs:

// Vecāku klase
class SuperClass {
    // Metode, kuru var pārdefinēt
    public void display() {
        System.out.println("Šis ir SuperClass display metode.");
    }
}

// Bērnu klase
class SubClass extends SuperClass {
    // Pārdefinēta display metode
    @Override // Anotācija pārklāšanas pārbaudei kompilācijas laikā
    public void display() {
        System.out.println("Šis ir SubClass display metode.");
    }
}

Python piemērs:

# Vecāku klase
class SuperClass:
    # Metode, kuru var pārdefinēt
    def display(self):
        print("Šis ir SuperClass display metode.")

# Bērnu klase
class SubClass(SuperClass):
    # Pārdefinēta display metode
    def display(self):
        print("Šis ir SubClass display metode.")

Galvenais ir saglabāt metodes nosaukumu un signatūru, bet mainīt tās uzvedību bērnu klasē.