پایتون

جلسه ۵۶: متد Overriding در پایتون

در این درس شما یاد میگیرید که Overriding چیست و چگونه به آن در پایتون دست‌یابیم.

مقدمه‌ی کوتاه

(متد Overriding یعنی اینکه یک متد در کلاس‌ parent را دوباره در زیرکلاس ها تعریف کنیم)

به عبارت دیگر، اگر یک کلاسی بخواهد یک متدی را پیاده‌سازی کند که در کلاس‌های parent آن باشد، به این موضوع متد Overriding گویند.

در مثال قبلی، Rectangle و Circle متد getArea را از کلاس اصلی یعنی shape بازتعریف کرده‌اند.(Overriding)

در این مورد:

  • متدی که در کلاس parent است را متد overridden  گویند.
  • متدی که در کلاس‌های shild است را متد overriding  گویند.

ما پیاده‌سازی متد getArea را در درس قبلی دیدیم، که مفهوم overriding را به تصویر میکشید. مکان هایی که با رنگ دیگر در کد زیر مشخص شده‌اند، محل متد overriding است.

کد زیر را نگاه کنید!

class Shape:
    def __init__(self):  # initializing sides of all shapes to 0
        self.sides = 0

    def getArea(self):
        pass


class Rectangle(Shape):  # derived form Shape class
    # initializer
    def __init__(self, width=0, height=0):
        self.width = width
        self.height = height
        self.sides = 4

    # method to calculate Area
    def getArea(self):
        return (self.width * self.height)


class Circle(Shape):  # derived form Shape class
    # initializer
    def __init__(self, radius=0):
        self.radius = radius

    # method to calculate Area
    def getArea(self):
        return (self.radius * self.radius * 3.142)


shapes = [Rectangle(6, 10), Circle(7)]
print("Area of rectangle is:", str(shapes[0].getArea()))
print("Area of circle is:", str(shapes[1].getArea()))

مزایا و ویژگی‌های مهم از متد Overriding

  • کلاس‌های ساخته شده بر اساس کلاس پایه، میتوانند پیاده‌سازی مخصوص خودشان را برای متدهای ارث برده نیز داشته باشند، بدون اینکه آن متد را در کلاس parent تغییر دهند.
  • برای هر متد، کلاس child میتواند متدهای کلاس parent را استفاده کند یا آن ها را تغییر دهد و پیاده‌سازی مخصوص خود را داشته باشد.
  • متدoverriding نیاز به وراثت دارد، پس باید حداقل یک کلاس این ویژگی را داشته باشد تا بتوان از این موضوع استفاده کرد.
  • متدها در کلاس‌های ساخته شده معمولا متفاوت هست و هر کدام پیاده‌سازی مخصوص خود را دارند.

اکنون شما با مفاهیم overriding آشنا شدید. در درس بعدی عملگر overloading  را یاد خواهید گرفت.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا