Sobes.tech
Junior — Middle

ობიექტზე ორიენტირებული პროგრამირების დროს მეთოდის გადაწერასა და მეთოდის გადატვირთვის შორის რა განსხვავებაა?

sobes.tech AI

პასუხი AI-სგან

მეთოდის გადაფარვა (overriding) არის მაშინ, როდესაც ქვესკლასი უზრუნველყოფს თავის საკუთარი რეალიზაციას იმ მეთოდის, რომელიც უკვე განსაზღვრულია ძირითადი კლასში. ეს საშუალებას აძლევს შეცვალოს მეთოდის ქცევა ქვესკლასის ობიექტებისთვის.

მეთოდის გადატვირთვა (overloading) არის ერთ სახელზე რამდენიმე მეთოდის შექმნა, მაგრამ სხვადასხვა პარამეტრებით (ტიპებით ან რაოდენობით). ზოგი ენა (მაგალითად, Java, C++) ამას ენის დონეზე უჭერს მხარს, ხოლო Python-ში გადატვირთვა სხვა გზით ხორციელდება, მაგალითად, დეფოლტ პარამეტრებით ან ტიპების შემოწმებით მეთოდის შიგნით.

მაგალითი გადაფარვის:

class Animal:
    def sound(self):
        print("რაღაც ხმა")

class Dog(Animal):
    def sound(self):
        print("ბრახუნი")

Python-ში გადატვირთვა ჩვეულებრივ ასე იმიტირებს:

def add(a, b, c=None):
    if c is not None:
        return a + b + c
    return a + b

ამ გზით, გადაფარვა იცვლის მემკვიდრეობით მიღებული მეთოდის ქცევას, ხოლო გადატვირთვა საშუალებას აძლევს ერთ სახელზე არსებული მეთოდი მუშაობს სხვადასხვა პარამეტრებით.