متد سازنده (constructor) (حل شد)
سلام دوستان ..
من میدونم کلاس سازنده چیه و کارش چیه (البته در سطح ابتدایی خودم)
ولی امروز که داشتم از android.hive استفاده میکردم دیدم در یک کلاس که مربوط یه فیلد های ی دیتابیس و getter , setter هست
از سه تا constructor استفاده شده . یدونش خالی بود . اون یکی فقط دو تا از متغیر ها رو به عنوان پارامتر میگرفت و سومی هم هر سه شون رو .
خواستم اینو بدونم که همچینی کاری نیازه ؟ نمیشه همشو توی یه متد سازنده نوشت ؟ چه نیازی به نوشتن هر سه هست ...
اگر کسی هست که برام یه توضیح مختصر بده ممنون میشم . اینم تصویر کد..
بستگی به نیاز و نوع استفاده داره و حتما لازم نیست به این شکل حتما سه تا باشه و یا حتی میتونه بیشتر هم باشه و مقادیر بیشتری رو دریافت کنه مثلا یک نمونه دیگه باشه که همین سه تا ورودی رو بصورت یک ورودی اما بصورت آرایه بگیره و یا هونطور که خودتون گفتید حتی همشون رو درون یکی نوشت و با گرفتن یک 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){
...
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .