جاوا

جلسه ۳۶: چندریختی پویا در جاوا

در این جلسه، با مفاهیم چندریختی پویا آشنا خواهید شد. موارد زیر را بیان خواهیم کرد
  • چند ریختی پویا چیست؟
  • مثالی از چند ریختی پویا
  • توضیح

چند ریختی پویا چیست؟

چندریختی پویا مکانیزمی است که به وسیله آن می توان متدها را با نام ، نوع بازگشتی و پارامترهایی یکسان در کلاس پایه و کلاس های مشتق شده تعریف کرد.
در مورد اینکه کدام متد override شده فراخوانی شود، در زمان اجرا تصمیم گرفته میشود.

مثالی از چند ریختی پویا

مثال کلاس Shape را در نظر می گیریم:

// Shape Class
class Shape {
  
  public double getArea() {
    return 0;
  }
  
}

// A Rectangle is a Shape
class Rectangle extends Shape {  // extended form the Shape class

  private double length;
  private double width;
  
  public Rectangle(double length, double width) {
    this.length = length;
    this.width = width;
  }

  public double getArea() {
    return this.width * this.length;
  }
  
}

// A Circle is a Shape
class Circle extends Shape {

  private double radius;
  
  public Circle(double radius) {
    this.radius = radius;
  }

  public double getArea() {
    return 3.13 * this.radius * this.radius;
  }


  public static void main(String args[]) {
    Shape[] shape = new Shape[2]; // Creating the shape array of size 2

    shape[0] = new Circle(3); // creating the circle object at index 0
    shape[1] = new Rectangle(2, 3); // creating the rectangle object at index 1

    System.out.println("Area of Circle: " + shape[0].getArea());
    System.out.println("Area of Rectangle: " + shape[1].getArea());
  }

}
یک متغیر از کلاس پایه می تواند برای ارجاع به اشیای کلاسهای مشتق شده استفاده شود:
Shape obj1 = new Circle(3); 
Shape obj2 = new Rectangle(2, 3);

//.
//.
//.

obj1.getArea();
obj2.getArea();
در اینجا ، متغیرهای مرجع obj1 و obj2 از نوع کلاس Shape هستند ، اما آنها به ترتیب به اشیایی از جنس Circle و Rectangle اشاره می کنند.

توضیحات:

  • ()obj1.getArea متد ()getArea از زیر کلاس Circle را اجرا می کند.
  • ()obj2.getArea متد ()getArea از زیر کلاس Rectangle را اجرا می کند.
  • obj1 اشاره گری به کلاس Circle است و چون به یک شی Circle اشاره می کند متد کلاس Circle را نیز فراخوانی می کند.
  • obj2 اشاره گری به کلاس Rectangle است و چون به یک شی Rectangle اشاره می کند متد کلاس Rectangle را نیز فراخوانی می کند.
این انتخاب ها در زمان اجرا انجام می شود و بنابراین ، چندریختی پویا یا چندریختی زمان اجرا نامیده می شود. حال که با مفهوم چند ریختی پویا آشنا شدیم ، در جلسه بعدی تفاوت بین چند ریختی پویا و ایستا را بررسی می کنیم.

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

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

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

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