Sobes.tech
Junior

Kada dolazi do prepisivanja metode (overriding)?

sobes.tech АИ

Одговор од АИ

Prepisivanje metode (overriding) događa se u hijerarhiji nasleđivanja kada podklasa pruža svoju implementaciju metode koja je već definisana u roditeljskoj klasi sa istim imenom, potpisom (poklapanje tipa i broja parametara) i tipom povratne vrednosti (ili kovarijantnim u slučaju tipa objekta povratne vrednosti).

Ključne karakteristike:

  • Nasleđivanje: Prepisivanje je moguće samo u kontekstu nasleđivanja (roditeljske i podklase).
  • Potpis: Metod u podklasi mora imati isti potpis (ime, broj i tipove parametara) i isti tip povratne vrednosti (ili njegov kovarijantni podtip) kao metod u roditeljskoj klasi.
  • Pristupačnost: Metod koji se prepisuje mora biti dostupan za podklasu (obično public, protected).
  • Polimorfizam: Prepisivanje je osnova polimorfizma u vremenu izvršenja (runtime polymorphism), omogućavajući objektima podklase da reaguju na poziv metode na svoj način, čak i kada im se pristupa putem reference na roditeljsku klasu.

Primer (Java):

// Roditeljska klasa
class Animal {
    // Metod koji će biti prepisan
    public void makeSound() {
        System.out.println("Životinja pravi zvuk");
    }
}

// Podklasa
class Dog extends Animal {
    // Prepisivanje metode makeSound()
    @Override // Anotacija @Override je opcionalna, ali preporučena
    public void makeSound() {
        System.out.println("Pas laje");
    }
}

Primer upotrebe:

// Kreiramo objekat Dog
Animal myDog = new Dog();
// Pozivamo metodu. Biće pozvana prepisana verzija iz Dog
myDog.makeSound(); // Izlaz: Pas laje

// Kreiramo objekat Animal
Animal someAnimal = new Animal();
// Pozivamo metodu. Biće pozvana verzija iz Animal
someAnimal.makeSound(); // Izlaz: Životinja pravi zvuk