تاریخ امروز:29 اسفند 1402
آموزش چندریختی و یا polymorphism در جاوا

آموزش چندریختی و یا Polymorphism در جاوا

خب میرسیم به یکی دیگه از قابلیت‌های مهم شی‌گرایی یعنی Polymorphism و یا چند ریختی. Polymorphism یا چند ریختی روش به شما اجازه می‌دهد تا توابع و متغیرهایی در برنامتون ایجاد کنید که در جاهای مختلف رفتار مختلفی رو نشون بدن.

در جاوا ۲ مدل Polymorphism یا چند ریختی داریم:

  1.  زمان اجرا (پلی مورفیسم پویا)
  2. زمان کامپایل (پولی مورفیسم ایستا)

در مورد چند‌ریختی زمان اجرا و یا Dynamic Polymorphism اینجوری میشه توضیح داد:

ما کلاسی داریم که از یک کلاس دیگر ارث بری می‌کند. ما می‌توانیم توابع کلاس فرزند را هم‌نام با کلاس پدر تعریف کنیم و اصطلاحا آن را Overide کنیم. برای درک بهتر مثال زیر رو ببینید:

package com.soroush;

public class Polymorphism extends father{

    @Override
    public void dataPrinter(String data) {
        System.out.println("in Meghdar az Class Farzand Chap Shode Ast"+data);
    }
}
class father{
    private int a;
    private int b;
    public void dataPrinter(String data){
        System.out.println("in Meghdar az Class Pedar Chap Shode Ast"+data);
    }
}

در مثال بالا می‌بینید که تابع dataPrinter دارای ۲ پیاده‌سازی مختلف می‌باشد. زمانی که از کلاس Polymorphism شی بسازیم و این تابع رو صدا بزنیم، تابع درون Polymorphism صدا زده خواهد شد و در صورتی که از کلاس father شی بسازیم، تابع مربوط به کلاس father صدا خواهد شد.

در مورد چند‌ریختی زمان کامپایل و یا Istatic Polymorphism می‌توان اینجوری توضیح داد:

توابعی در کلاس که هم‌نام هستند ولی هر یک ورودی‌های مختلف را شامل می‌شوند و کارهای مختلف می‌کنند. مثال زیر رو مشاهده کنید:

package com.soroush;

public class Polymorphism {

    public void dataPrinter(String data) {
        System.out.println("in Meghdar az Class Farzand Chap Shode Ast"+data);
    }

    public void dataPrinter(String data,String data2) {
        System.out.println("Meghdar Aval: "+data+", Meghdare Dovom: "+ data2);
    }
    public void dataPrinter(String data,String data2,String data3) {
        System.out.println("Meghdar Aval: "+data+", Meghdare Dovom: "+ data2 +", Meghdare Sevom: "+ data3);
    }
}

در اینجا تابع dataPrinter دارای ۳ پیاده سازی متفاوت می‌باشد. اگر در طول برنامه بهش ۱ رشته پاس داده بشه، تابع اول، اگر ۲ تا پاس داده بشه تابع دوم و اگر ۳ تا پاس داده بشه تابع سوم اجرا میشه.

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

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