جلسه یازدهم-Statics و Overloading

جلسه یازدهم Statics , Overloading :

Overloading:

در جاوا این امکان وجود دارد که بتوان چندین متد هم نام تعریف کردمشروط بر اینکه تعداد و نوع پارامترهای ورودی متدها متفاوت باشند.متدهای overload شده میتوانند مقدار بازگشتی متفاوتی داشته باشند.به متدهای هم نام که دارای پارامترهای متفاوت از هم هستند overloading می گویند.

Method overloading یکی از روشهای پیاده سازی چندریختی (polymorphism) می باشد.

هنگامی که یک متد overload شده فراخوانی می شود ماشین مجازی جاوا (JVM)با توجه به تعداد پارامترهای ورودی و نوع پارامترها تشخیص می دهد که کدام تابع را فراخوانی نماید.

مثال۱:

Output:

No parameters

a: 10

a and b: 10 20

double a: 123.25

Result of ob.test(123.25): 15190.5625

مثال ۲:

Output:

a and b: 10 20

Inside test(double) a: 88

Inside test(double) a: 123.2

Overloading constructor:

امکان overload کردن متدهای سازنده هم وجود داردبرای درک بهتر موضوع به مثال زیر توجه نمایید:

 

همانطور که مشاهده می نمایید تابع سازنده Box به ۳ پارامتر هنگام تعریف نیاز دارد بنابراین هنگام تعریف object از کد زیر نمی توانیم استفاده نماییم .

Box ob = new Box();

 

استاتیک(Static):

گاهی لازم است بدون ارجاع به شیء ایجاد شده از یک کلاس متدی را صدا بزنیم(بدون نیاز به شیء سازی). فرضا کلاسی داریم حاوی متدهایی جهت محاسبات ریاضی (مثلا محاسبه قدرمطلق یک عدد یا محاسبه سینوس یک زاویه) برای اینکار کافیست در زمان تعریف متدهای مورد نظر از کلمه کلیدی static استفاده کنیم. مثال :

 

خروجی:

a = 42

b = 99

نکات :

  • متد استاتیک یک کلاس فقط میتواند به دیگر متدهای استاتیک دسترسی داشته باشد. (بدون شیء سازی)
  • متد استاتیک فقط به داده های استاتیک سطح کلاس دسترسی دارد. (بدون شیء سازی)
  • در متد استاتیک از کلمه کلیدی this ,super نمیتوان استفاده نمود.
  • متغیرهای استاتیک درسطح کلاس به صورت اشتراکی(shared) در تمام نمونه های شیء ، استفاده میشوند. به این مفهوم که در اشیاء ساخته شده کپی نمیشوند.

متد main نمونه ای از متد استاتیک میباشد که به عنوان نقطه آغاز برنامه (Entry Point) توسط JVM مورد استفاده قرار میگیرد. دلیل استاتیک بودن آن هم این است که قبل از شیء سازی از کلاس اجرا میگردد.

مثال:

خروجی:

x = 42

a = 3

b = 12

 




پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code