Junior — Middle
გთხოვთ, ახსენით განსხვავება იმ მეთოდის შორის, რომელიც კლასში იმავე სახელით და სიგნატურით იმართება და მისი გადატვირთვა, და მეთოდის გადახედვა მემკვიდრეობით კლასებში.
sobes.tech AI
პასუხი AI-სგან
მეთოდის გადატვირთვა (overloading) ხდება მაშინ, როდესაც ერთ კლასში ერთნაირი სახელის მქონე, მაგრამ სხვადასხვა სიგნატურით (პარამეტრების სხვადასხვა ნაკრებით) რამდენიმე მეთოდი იქმნება. ეს საშუალებას აძლევს გამოიძახო მეთოდი სხვადასხვა არგუმენტებით, და კომპილატორი ირჩევს შესაბამის ვარიანტს.
მეთოდის გადაფარვა (overriding) ხდება მემკვიდრეობით მიღებულ კლასში, როდესაც მეთოდი იგივე სიგნატურით, როგორც ბაზის კლასში, ხელახლა იმპლემენტირებულია, რათა შეცვალოს ან გააფართოვოს ბაზის მეთოდის ქცევა.
მაგალითი Swift-ში:
class Animal {
func sound() {
print("რაღაც ხმა")
}
}
class Dog: Animal {
override func sound() { // გადაფარვა
print("ბრახუნი")
}
func sound(volume: Int) { // გადატვირთვა
print("ბრახუნი მოცულობით \(volume)")
}
}
აქ, sound() კლასი Dog-ში გადაფარავს ბაზის კლასი Animal-ის მეთოდს, ხოლო sound(volume:) არის მეთოდის გადატვირთვა სხვა პარამეტრებით.