Junior
Kada laikomas, kad metodas yra perrašytas?
sobes.tech AI
Atsakymas iš AI
Metodas laikomas perrašytu šiais atvejais:
- Jis paskelbtas vaikų klasėje.
- Turi tą patį pavadinimą kaip tėvų klasės metodas.
- Turi tą pačią signatūrą (parametrų skaičių ir tipus) ir parametrų tvarką.
- Turi grąžinamosios reikšmės tipą, suderinamą su tėvų klasės metodo grąžinamosios reikšmės tipu (kovariantiškumas, jei taikoma).
- Turi tą patį arba platesnį prieigos modifikatorių nei tėvų klasės metodas (daugelyje objektų orientuotų kalbų).
- Tėvų metodas paskelbtas kaip virtualus, abstraktus ar sąsajos (interface) metodas (kalbose, kuriose būtina aiškiai nurodyti perdengimo galimybę, pvz., C# su
virtualraktiniu žodžiu).
Pavyzdys Java kalba:
// Tėvų klasė
class SuperClass {
// Metodas, kurį galima perrašyti
public void display() {
System.out.println("Tai yra SuperClass display metodas.");
}
}
// Vaikų klasė
class SubClass extends SuperClass {
// Perrašytas display metodas
@Override // Anotacija perdengimo patikrinimui kompiliavimo metu
public void display() {
System.out.println("Tai yra SubClass display metodas.");
}
}
Python pavyzdys:
# Tėvų klasė
class SuperClass:
# Metodas, kurį galima perrašyti
def display(self):
print("Tai yra SuperClass display metodas.")
# Vaikų klasė
class SubClass(SuperClass):
# Perrašytas display metodas
def display(self):
print("Tai yra SubClass display metodas.")
Svarbiausia yra išlaikyti metodo pavadinimą ir signatūrą, tačiau keisti jo elgesį vaikų klasėje.