Junior
Qachon metod qayta yozilgan hisoblanadi?
sobes.tech AI
AIdan javob
Usul metod, quyidagi holatlarda qayta yozilgan hisoblanadi:
- U voris sinfda e'lon qilingan.
- U otasining sinfidagi metod bilan bir xil nomga ega.
- U xuddi shunday imzoga (parametrlar soni va turlari) va parametrlar tartibiga ega.
- U otasining sinfidagi metod bilan mos keladigan qaytarish turiga ega (kovariantlik, agar qo'llanilsa).
- U otasining sinfidagi metod bilan bir xil yoki kengroq kirish huquqiga ega (ko'pgina ob'ektga yo'naltirilgan tillarda).
- Otasining metod virtual, abstrakt yoki interfeys sifatida e'lon qilingan (tillarda, aniq ko'rsatishni talab qiladigan, masalan, C# da
virtualkalit so'zi bilan).
Java misoli:
// Otasining sinfi
class SuperClass {
// Qayta yozilishi mumkin bo'lgan metod
public void display() {
System.out.println("Bu SuperClass ning display metodi.");
}
}
// Voris sinf
class SubClass extends SuperClass {
// Qayta yozilgan display metodi
@Override // Kompilyatsiya bosqichida qayta yozishni tekshirish uchun annotatsiya
public void display() {
System.out.println("Bu SubClass ning display metodi.");
}
}
Python misoli:
# Otasining sinfi
class SuperClass:
# Qayta yozilishi mumkin bo'lgan metod
def display(self):
print("Bu SuperClass ning display metodi.")
# Voris sinf
class SubClass(SuperClass):
# Qayta yozilgan display metodi
def display(self):
print("Bu SubClass ning display metodi.")
Asosiy nuqta, metod nomi va imzosini saqlash, lekin uning xulq-atvorini voris sinfda o'zgartirishdir.
Overloading (yuklamoq) bilan muhim farq:
Yuklamoq, bir sinfda bir xil nomli, ammo turli imzoga ega bir nechta metodlarni e'lon qilishdir. Qayta yozish (overriding) esa, voris sinfda, otasining metodiga bir xil nom va imzoga ega metodni e'lon qilishdir.