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:
- Tas ir paziņots bērnu klasē.
- Tam ir tāds pats nosaukums kā vecāku klases metodam.
- Tam ir tāda pati signatūra (parametru skaits un tipi) un parametru secība.
- Tam ir atgriešanas tips, kas ir saderīgs ar vecāku klases metodes atgriešanas tipu (kovarianti, ja piemērojams).
- Tam ir tāds pats vai plašāks piekļuves modifikators nekā vecāku klases metodam (lielākajā daļā objektorientētu valodu).
- 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
virtualatslē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ē.