جلسه ۳۴: override یا بازنویسی متد در جاوا

در این جلسه ، می آموزید که override
یا بازنویسی متد چیست و چگونه می توان از آن در جاوا استفاده کرد. موارد زیر را بیان خواهیم کرد:
- یک مقدمه کوتاه
- مزایای بازنویسی متد
- ویژگی های اصلی در بازنویسی متد
یک مقدمه کوتاه
override
کردن متد فرایند تعریف مجدد یا بازنویسی متد کلاس پایه در یک کلاس مشتق شده است.
به عبارت دیگر ، اگر یک زیر کلاس ، پیاده سازی خاصی از متدی را که توسط یکی از کلاسهای پایه ی آن اعلام شده فراهم کند ، با عنوان override
متد شناخته می شود. در مثال قبلی ، کلاسهای Rectangle
و Circle
متد ()getArea
از کلاس Shape
را override
می کردند. override
انجام می شود تا کلاس فرزند بتواند متد خود را که قبلاً توسط کلاس والد ارائه شده است پیاده سازی کند. در این مورد:
- به متد موجود در کلاس والد ، متد جایگزین شده یا
overridden method
گفته می شود. - به متد موجود در کلاسهای فرزند متد جایگزین یا
overriding method
گفته می شود.
در جلسه قبلی متد ()getArea
را دیدیم که مفهوم override
را نشان می داد. در کدهای زیر مکان هایی که مفهوم override
استفاده شده را می توانید ببینید.
// A sample class Shape which provides a method to get the Shape's area
class Shape {
public double getArea() {
return 0;
}
}
// A Rectangle is a Shape with a specific width and height
class Rectangle extends Shape { // extended form the Shape class
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public double getArea() {
return width * height;
}
}
// A Circle is a Shape with a specific radius
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double getArea() {
return 3.14 * radius * radius;
}
}
class driver {
public static void main(String args[]) {
Shape[] shape = new Shape[2]; // Creating shape array of size 2
shape[0] = new Circle(2); // creating circle object at index 0
shape[1] = new Rectangle(2, 2); // creating rectangle object at index 1
// Shape object is calling children classes method
System.out.println("Area of the Circle: " + shape[0].getArea());
System.out.println("Area of the Rectangle: " + shape[1].getArea());
}
}
مزایای بازنویسی متد
بازنویسی یا جایگزینی متد (Method overriding) در برنامه نویسی شی گرا (OOP) بسیار مفید است. برخی از مزایای آن در زیر بیان شده است:
- کلاس های مشتق شده می توانند پیاده سازی های خاص خود را بدون تغییر در متدهای کلاس والد ، به متدهای ارثی ارائه دهند.
- برای هر متد، یک کلاس فرزند می تواند از پیاده سازی ارائه شده در کلاس والد استفاده کند یا پیاده سازی خود را انجام دهد.
ویژگی های اصلی در بازنویسی متد
در اینجا برخی از ویژگی های اصلی Method Overriding
وجود دارد:
- بازنویسی متد به وراثت نیاز دارد و باید حداقل یک کلاس مشتق شده وجود داشته باشد.
- کلاس یا کلاسهای مشتق شده باید برای متدهای
override
شده دارای اعلامیه ای یکسان با اعلامیه این متد در کلاس والد باشند ، به عنوان مثال ، سطح دسترسی ، نام ، پارامترهای مشابه و همان نوع بازگشتی از متد در کلاس پایه. - متد موجود در کلاس یا کلاسهای مشتق شده باید پیاده سازی متفاوتی از یکدیگر داشته باشد.
- متد کلاس پایه باید در کلاس مشتق شده
override
شود. - کلاس و همچنین متد پایه نباید به صورت
final
اعلام شده باشند.
اکنون که با مفهوم method overriding
آشنا شدیم ، تفاوت بین method overloading
و method overriding
را در درس بعدی بررسی می کنیم.