بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

عدم درک مفهوم Polymorphism

مدیریت گفتگو
Smkm79 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام خدمت دوستان عزیز؛

من تو درک و یادگیری مفهوم 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();
		}

کمک کنید که بدجوری هنگیدم :(

نظرات

Smkm79 11 سال پیش
من موندم ، این همه برنامه نویس اینجاس بعد یکدوم Polymorphism رو یاد نگرفتید؟؟ چجوری پس برنامه نویس شدید؟
Spirit 11 سال پیش
من که ادعایی ندارم، اینجا هم تعداد انگشت شماری برنامه نویس داریم که خودشون رو بروز دادن، بقیمون ... D: ، توضیح بعضی مباحث خاص مثل این مورد از توان خیلی ها خارج هست، ولی شما همین کلمه انگلیسیش رو همراه با «چیست» تو گوگل جستجو بکنید.

پاسخ‌ها 3

مشاهده پاسخ صحیح
احمد 11 سال پیش

نظرات

کاشی زاده 11 سال پیش

 پاسخ صحیح

ببنید اینکه نوشتید این همه برنامه نویس اینجا هست ولی کسی نمیدونه صحیح نیست .

خیلی از تکنیک ها در برنامه نویسی هست که مورد استفاده خیلی از برنامه نویس ها قرار میگیره ولی اصطلاح علمی اون تکنیک رو نمیدونن مثلا همین پلیمورفیسم در آموزش ها بار ها مورد استفاده قرار گرفته و استاد توضیح دادن ولی شاید اسمی از این کلمه نبردن .

حالا در زیر من یه توضیح مختصر میدم امیداوارم که متوجه بشید .

 

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  بود .

نظرات

Smkm79 11 سال پیش
ممنون از شما ولی یه غلط داشتید " چند متد با نام های مختلف ولی با پارمتر های ورودی غیر یکسان " ؟ با نام های یکسان و Structure های غیر یکسان.
کاشی زاده 11 سال پیش
ااا راست میگی اشتباه لفظی بود اصلاحش کردم ممنون از توجهت :)
Smkm79 11 سال پیش

بهتر نیست به جای استفاده از 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);
}

نظرات

کاشی زاده 11 سال پیش
نه ، هرچیزی برای کار مخصوص به خودش ساخته شده اگر قرار بود جنریک کار پلیمورفیسم رو انجا بده که نوشته نمیشد . شما فرض کن از جنریک استفاده کردید و بجای اینکه کاربر به شما یک String یا int داد بهتون یک Object بی ربط داد حالا میخواید چیکارش کنید ؟

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .