آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

متد سازنده (constructor) (حل شد)

sana ebadi  9 سال پیش  9 سال پیش
+2 0

سلام دوستان ..

من میدونم کلاس سازنده چیه و کارش چیه (البته در سطح ابتدایی خودم) 

ولی امروز که داشتم از android.hive استفاده میکردم دیدم در یک کلاس که مربوط یه فیلد های ی دیتابیس و getter , setter  هست 

از سه تا constructor استفاده شده . یدونش خالی بود . اون یکی فقط دو تا از متغیر ها رو به عنوان پارامتر میگرفت و سومی هم هر سه شون رو .

خواستم اینو بدونم که همچینی کاری نیازه ؟ نمیشه همشو توی  یه متد سازنده نوشت ؟ چه نیازی به نوشتن هر سه هست ...

اگر کسی هست که برام یه توضیح مختصر بده ممنون میشم . اینم تصویر کد..

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Criss  9 سال پیش
+4 0

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

ساختن کلاس با کانستراکتر اول بدون گرفتن مقادیر در ادامه فقط میشه اون رو بصورت seter استفاده کرد ، یعنی جایی لازم میشه که فقط اطلاعاتی پر بشه و مثلا ما یک تعداد مخاطب اماده داریم ه فقط تعداد اونهارو میدونیم مثلا 20 تا  اما و ادامه قراره این اطلاعات دریافت بشه ، یا ساخت کلاس با کانستراکتور دوم ما یکسری مخاطب با اطلاعات کامل داریم و میتونیم نمایش بدیم و حتی میتونیم  ویرایش کنیم چون id هم مشخص هست و میشه روی دیتابیس خیلی کارها کرد

ساخت کلاس با کانستراکتور سوم میتونه مثالی از این باشه که ما اطلاعات رو از سرور دریافت کردیم  و فقط میخایم نمایش بدیم و یا باید واریز به دیتابیس کرد و نمیتونیم اونهارو ویرایش کنیم به دلیل اینکه id نداریم یا نمونه های مختلف از نیاز و استفاده و ی هرچیزی

برای مثال توی آموزش های استاد لایبری HelperCopy که نوشته شده بود تقریبا مشابه این موضوع هست اما اونجا یک شی ساخته نمیشد و یک کار انجام میشد و مثلا انواع کپی از فایل  و استریم و غیره

یک مثال ساده مشابه این موضوع مثلا ما میخایم یک کلاس داشته باشیم  برای نمایش یک Toast میتونه متدها مختلف داشته باشه فرق این هست که در اونجا یک کلاس ساخته میشه که کی شی هست و مقادیر درونی متفاوتی داره که وجود این مقادیر باعث میشه کارای متفاوتی داشته باشه اما در اینجا فقط یک کار انجام میشه

 private toast(String msg){
Toast.makeText(msg,Toast.LENGHT_SHORT).show()
}

 private void toast(String msg , boolean lenght){
Toast.makeText(msg, (lenght) ? Toast.LENGHT_LONG : Toast.LENGHT_SHORT).show()
}

 private void toast(String msg , boolean lenght,boolean handler){
if (handler){
G.HANDLER.post(new Runable(){
Toast.makeText(msg, (lenght) ? Toast.LENGHT_LONG : Toast.LENGHT_SHORT).show()
});
} else {
Toast.makeText(msg, (lenght) ? Toast.LENGHT_LONG : Toast.LENGHT_SHORT).show()
}

}

private void toast(String msg , boolean lenght,boolean handler , boolean cancelAble){
...
}

 

0 0
خیلی خوب بود دوست من ممنون . ینی پارامتر هاشو باید طبق نیاز هایی که قراره برامون پیش بیاد قرار بدیم یا حتی ممکن هست ما پیش بینی نکرده باشیم چه چیزی نیاز هست میایم و مثلا یه پارامتر یا یک کانسراکتور دیگه برای نیازمون میسازیم . خیلی خوب بود . (9 سال پیش)
0 0
پنمیدونم چرا امروز نمیتونم پاسخ شما رو به عنوان پاسخ صحیح انتخاب کنم هههه . سایت مشکلی داره ؟ (9 سال پیش)

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