PDA

View Full Version : operator overloading



tah_206207
جمعه 01 مرداد 1389, 19:15 عصر
سلام دوستان من قبلا با c++ برنامه نوییسی میکردم الان دارم به java مهاجرت میکنم چند تا سوال داشتم
۱) برای operator overloading باید چیکار کرد مثلا اگه بخوایم یه object رو به یکی دیگه انتساب بدیم باید چیکار کنیم؟ چطوری میتونیم = رو overload کنیم؟
۲) چطوری میتونیم یه object رو به فرم مشخصی از ورودی بگیریم؟ یعنی مثلا یه object از کلاس student داریم و میخوایم اونو بدین صورت از ورودی بگیریم
studentName studentId ...
همونطور که میدونید در c++ operator ورودی رو overload میکنیم واسه اینکار در جاوا باید چیکار کنیم؟

cups_of_java
جمعه 01 مرداد 1389, 22:15 عصر
در جاوا Operator Overloading وجود نداره. علت پیشتیبانی نکردن از این امکان هم بر می گرده به سادگی زبان جاوا و وضوح عملگرها و بدون ابهام بودن کد هست.
برای حل مشکلتون شما:
1) در حالت اول باید از تابع clone استفاده کنید. این تابع در کلاس Object وجود داره، پس همه اشیا دارنش. شما باید این تابع رو برای کلاس خودتون پیاده سازی کنید (Override) تا بتونید عمل انتساب (کپی عمیق) رو داشته باشید.

2) یک تابع با نام دلخواه بنویسید و کد دریافت داده های کلاستون رو در اون بزارید. مثلن: read یا input...(ضمنن شما با استفاده از System.in.read می تونید ورودی بگیرید که نمونه کدش رو تو نت می تونید پیدا کنید.

نکته: هر زبانی ویژگی ها و تکنیک های خاص خودش رو برای انجام کارهای یکسان داره. به این الگو ها و قلق ها Idiom هم میگن. اینکه جاوا Operator Overloading نداره نباید شماره مایوس کنه و یا بهش خورده بگیرید. سعی کنید یاد بگیرید با جاوا چطور میشه کد های اصولی نوشت.

mazdadoost
جمعه 01 مرداد 1389, 22:33 عصر
سلام دوست من :
اگر هدفتون اجرای کد روی JVM هست میتونید در صورت لزوم از Groovy برای داشتن operator overloading استفاده کنید.
موفق باشید.

tah_206207
شنبه 02 مرداد 1389, 00:40 صبح
سلام دوست من :
اگر هدفتون اجرای کد روی JVM هست میتونید در صورت لزوم از Groovy برای داشتن operator overloading استفاده کنید.
موفق باشید.
نه من تاکیدی به operator overloading ندارم فقط میخواستم بدونم روش کار جاوا چگونه است
ممنون که پاسخ دادید با تشکر

tah_206207
شنبه 02 مرداد 1389, 00:42 صبح
و البته یه سوال میشه کد های Groovy و جاوا یا Scala رو با هم یه جا و واسه پیاده سازی یه برنامه استفاده کرد؟