Junior — Middle
როგორ განვსაზღვროთ მეთოდის გადატვირთვა ობიექტზე ორიენტირებულ პროგრამირებაში მისი გადაწერით?
sobes.tech AI
პასუხი AI-სგან
მეთოდის გადატვირთვა (overloading) და მეთოდის გადაწერა (overriding) ობიექტზე ორიენტირებულ პროგრამირებაში განსხვავებული კონცეფციებია:
-
მეთოდის გადატვირთვა (overloading): ერთ კლასში რამდენიმე მეთოდი ერთ სახელწოდებაზე, მაგრამ სხვადასხვა პარამეტრებით (ტიპი, რაოდენობა). ეს საშუალებას აძლევს მეთოდი გამოიძახოს სხვადასხვა არგუმენტებით.
-
მეთოდის გადაწერა (overriding): როდესაც ქვესკლასი უზრუნველყოფს საკუთარი რეალიზაციას უკვე განსაზღვრული მეთოდის, რომელიც იმავე სიგნატურით (სახელი და პარამეტრები) არის ბაზის კლასში. ეს საშუალებას აძლევს შეცვალოს მეთოდის ქცევა ქვესკლასისთვის.
Java-ს მაგალითი:
class Animal {
void sound() {
System.out.println("ზოგიერთი ხმა");
}
void sound(String mood) { // გადატვირთვა
System.out.println("ხმა როდესაც " + mood);
}
}
class Dog extends Animal {
@Override
void sound() { // გადაწერა
System.out.println("ბრახუნი");
}
}
აქ, sound() კლასი Dog-ში გადაწერს ბაზის კლასის მეთოდს, ხოლო sound(String mood) იგივე კლასში გადატვირთულია.