عدم درک مفهوم Polymorphism
سلام خدمت دوستان عزیز؛
من تو درک و یادگیری مفهوم Polymorphism موندم و واقعا گیج شدم . مخصوصا قسمت Polymorphical Array.
Class1 me = new Class2();
این قسمتش سادس ولی Array !!!
/*
* Polymorphic Array
*/
Class1[] name = new Class1[2];
name[0] = new Class2();
name[1] = new Class3();
for (int x = 0; x < name.length; x++) {
name[x].eat();
}
کمک کنید که بدجوری هنگیدم :(
ببنید اینکه نوشتید این همه برنامه نویس اینجا هست ولی کسی نمیدونه صحیح نیست .
خیلی از تکنیک ها در برنامه نویسی هست که مورد استفاده خیلی از برنامه نویس ها قرار میگیره ولی اصطلاح علمی اون تکنیک رو نمیدونن مثلا همین پلیمورفیسم در آموزش ها بار ها مورد استفاده قرار گرفته و استاد توضیح دادن ولی شاید اسمی از این کلمه نبردن .
حالا در زیر من یه توضیح مختصر میدم امیداوارم که متوجه بشید .
Polymorphism چیست ؟
به معنی فارسی این لغت کاری نداریم چون باید کلمه فارسیش رو هم مجددا ترجمه کنیم و فقط مینویسم که در جریان باشید ،
چند ریختی
من خلاصه ای از چیزی که درک کردم رو میگم و خیلی به جزئیاتش کاری نداریم .
پلیمورفیسم در جاوا 2 نوع هست :
Compile time Polymorphism : که این نوع از پلیمورفیسم استاتیک هم میگن .
Runtime Polymorphism : به این نوع داینامیک میگن .
حالا بریم سراغ اصل مطلب که دقیقا چی هست .
زمانی که ما 2 کلاس داشته باشیم که یکی به عنوان پدر باشه و دیگری به عنوان کلاس فرزند ، و متدی در کلاس پدر و فرزند با یک نام وجود داشته باشه عمل Override صورت میگیره که همه دوستان باهاش آشنا هستند .
مثلا ما یک کلاس داریم به اسم Car و یک کلاس هم داریم به اسم Tiba :) و کلاس Tiba از کلاس Car که پدرش محسوب میشه extends میشه به شکل زیر :
public class Car {
public void getModel() {
}
}
public class Tiba extends Car {
@override
public void getModel() {
}
}
به این نوع از polymorphism میگن ، داینامیک
حالا polymorphism استاتیک چه شکلی هست .
فرضا یک کلاس داریم که داخل چند متد با نام های یکسان ولی با پارمتر های ورودی غیر یکسان هست مثل زیر :
public class A {
public void setText(String text){
}
public void setText(int text){
}
}
و شما میتونید از متد های مختلفش استفاده کنید و با تعیین نوع پارامتر ورودی نوع متد انتخابی مشخص میشه .
این خلاصه و چکیده روان شده ی polymorphism بود .
بهتر نیست به جای استفاده از Static Polymorphism از Generic استفاده کرد؟
public class A {
public void setText(String text){
}
public void setText(int text){
}
}
مثلا؛
public static <T> void setText(T text){
System.out.println(text);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .