Sobes.tech
Junior

Kada įvyksta metodo (overriding) perrašymas programavime?

sobes.tech AI

Atsakymas iš AI

Perrašymas metodo įvyksta paveldėjimo metu, kai vaiko klasė pateikia savo pačios įgyvendinimą metodo, kuris jau yra apibrėžtas tėvų klasėje. Metodo parašas (pavadinimas, grąžinamoji reikšmė ir argumentų skaičius/tipai) turi sutapti su tėvų klasės metodu. Tai leidžia veikti polimorfizmui: vaiko klasės objektas, naudojamas kaip tėvų klasės objektas, iškviečia savo specifinę metodo įgyvendinimą.

Naudojimo pavyzdžiai:

  • Paveldėto elgesio logikos keitimas.
  • Teikti specifinį subklasės įgyvendinimą bendram sąsajai.

Svarbūs punktai:

  • Reikalingas is-a santykis (paveldėjimas).
  • Metodo parašas turi sutapti.
  • Prieigos modifikatorius gali būti toks pats arba mažiau griežtas nei tėvų metodo.
  • Negalima perrašyti final arba static metodų (daugelyje kalbų).
// Pavyzdys Java kalba
class Animal {
    public void makeSound() {
        System.out.println("Bendras gyvūno garsas");
    }
}

class Dog extends Animal {
    @Override // Anotacija nurodo perrašymą
    public void makeSound() {
        System.out.println("Au!");
    }
}

// Naudojimas
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Išvestis: Bendras gyvūno garsas
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Išvestis: Au! (kviečiamas perrašytas metodas)
# Pavyzdys Python kalba
class Animal:
    def make_sound(self):
        print("Bendras gyvūno garsas")

class Dog(Animal):
    def make_sound(self): # Perrašymas
        print("Au!")

# Naudojimas
# animal = Animal()
# animal.make_sound() # Išvestis: Bendras gyvūno garsas
#
# dog = Dog()
# dog.make_sound() # Išvestis: Au!