آموزش مبحث polymorphism در جاوا

ارسال شده توسط: حسین درویشی Comments: 0

آموزش مبحث polymorphism در جاوا

مبحث polymorphism یکی ازمباحث مهم شی گرایی محسوب می شود. این مبحث در اکثر زبان هایی که از شی گرایی پشتیبانی می کنند، وجود دارد. جاوا هم یکی از این زبان ها محسوب می شود. در این مقاله مبحث polymorphism در جاوا را آموزش خواهم داد. همچنین به پاسخ سوالاتی نظیر: چند ریختی در جاوا چیست؟ ، چند ریختی چه کاربردی در شی گرایی دارد ، مزایای پلی مورفیسم چیست؟ و … خواهید رسید.

چند ریختی یا polymorphism در جاوا

قبلاً نیز در مقالۀ چندریختی در php توضیح دادم که؛ Polymorphism به معنی چند شکل یا چند ریختی می باشد و توانایی شکل دادن به اشکال را پلی مورفیسم می گویند؛ به عبارتی دیگر Polymorphism الگویی را در برنامه نویسی شیء گرا توصیف می کند. به طور کلی دو نوع Polymorphism داریم:

  • Polymorphism در زمان اجرا (توابع overriding)
  • Polymorphism در زمان کامپایل (توابع overloading)

نکته جالب توجه این است که جاوا از هر دو مورد Polymorphism در زمان اجرا و Polymorphism در زمان کامپایل بخوبی (برعکس php که از زمان کامپایل پشتیبانی نمی کند) پشتیبانی می کند.

1- چند ریختی در زمان اجرا در جاوا

تعریف متدها بصورت همنام در کلاس فرزند، چند ریختی در زمان اجرا را خواهد ساخت. اصطلاحاً به این کار override کردن می گویند.

به مثال زیر توجه کنید:

package javaPolymorphism;
public class A {
public void show() {
System.out.println("ali");
}
}
class B extends A{
public void show() {
System.out.println("hossein");
}
}

فراخوانی کلاسها و متدها:

package javaPolymorphism;
public class main {
public static void main(String[] args) {
// TODO Auto-generated method stub
A a=new A();
B b=new B();
a.show();
b.show();
}
}

خروجی:

ali
hossein

در مثال بالا می بینید که متد show دارای بدنۀ مختلف در کلاس والد و فرزند می باشد.

2- چند ریختی در زمان کامپایل در جاوا

polymorphism در زمان کامپایل همان overload کردن توابع می باشد. به صورتی که توابع آرگومان های متفاوتی با یکدیگرداشته باشند.

// Java program for Method overloading 
class MultiplyFun { 
// Method with 2 parameter 
static int Multiply(int a, int b) 
{ 
return a * b; 
} 
// Method with the same name but 2 double parameter 
static double Multiply(double a, double b) 
{ 
return a * b; 
} 
} 
class Main { 
public static void main(String[] args) 
{ 
System.out.println(MultiplyFun.Multiply(2, 4)); 
System.out.println(MultiplyFun.Multiply(5.5, 6.3)); 
} 
} 
برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]

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

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