+1 امتیاز
قبل در برنامه نویسی توسط (426 امتیاز)
ویرایش شده قبل توسط

سلام به همه دوستان

ما این کد رو زیاد میبینیم

List<Object> objList = new ArrayList<>();

اما سوال اینجاست که چرا باید یک UpCasting رو انجام بدیم و خودمون رو از ویژگی های ArrayList محروم کنیم در حالی که در این مثال قرار نیست که این ObjList رو جایی بفرستیم فقط تعریفش کردیم و بعد استفاده کردیم و تمام

 

2 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ
یکی از دلایل این کار استفاده از قابلیت چند ریختی یا polymorphism در برنامه نویسی شئ گرا است. شما با این کار می توانید هر زمانی که یک پیاده سازی لیست بهتر یا سریعتر داشتید براحتی و با کمترین تغییر اون رو جایگزین ArrayList در کدتون بکنید.

در کل برنامه نویسی بر پایه interface ها باعث میشه قابلیت های maintainability و reusability کد های شما بالا بره.
+2 امتیاز
قبل توسط (20 امتیاز)

در یک پیاده سازی درست شما هیچ ویژگی اضافه ای رو نباید در ArrayList در مقایسه با List قرار داده باشید. در واقع تمام متدهای List باید در ArrayList هم وجود داشته باشند و هیچ متد عمومی دیگری هم در ArrayList تعریف نشده باشد. پس شما چیزی رئ از دست ندادین. اما سوال اینجاست که چرا از این روش استفاده کنیم؟ به چند دلیل که در این پست توضیح کامل داده شده.

اصلی ترین دلیلش این هست که از قواعد شی گرایی به نحو درست استفاده بشه.

قبل توسط (426 امتیاز)
جواب خوبی بود متشکرم

سوالات مشابه

+1 امتیاز
1 پاسخ 461 بازدید
+1 امتیاز
1 پاسخ 299 بازدید
0 امتیاز
1 پاسخ 329 بازدید
0 امتیاز
1 پاسخ 446 بازدید
0 امتیاز
1 پاسخ 317 بازدید
0 امتیاز
1 پاسخ 436 بازدید
0 امتیاز
2 پاسخ 1.7هزار بازدید
+1 امتیاز
2 پاسخ 611 بازدید
...