بررسی دقیقتر اینترفیسها در جاوا (بخش اول)
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
بررسی جامع اینترفیسها در جاوا (بخش اول)
در دوره مقدماتی تا متوسط جاوا، با interface و abstraction آشنا شدیم. در این جلسه مثالهایی از شی گرایی و ارتباط بین کلاس ها و interface و کلاس های abstraction حل می کنیم تا این مبحث مهم را بهتر درک کنیم.
Interface ها ساختاری هستند که میتوانیم قوانینهایی که قرار است در کلاس فرزند اجبار شوند را درون آنها قرار میدهیم. اما یک مرحله پایین تر از interface ها، کلاسهای abstract هستند که میتوانند قوانینهایی را برای کلاس فرزند تعریف کنند اما به صورت درصدی به عنوان مثال میتوانیم تابعهایی را دورن کلاس abstract قرار دهیم که اجبار به پیاده سازی درون کلاس فرزند نباشد.
نحوه تعریف interface
public interface IA {
void showMessage(String message);
void fun1(int a,int b);
}
از interface نمیتوان شی ساخت. اما میتوان با استفاده از کلاسهای بی نام(anonymous) آنها پیاده سازی کرد.
به عنوان مثال نمیتوان اینترفیس IA را به صورت زیر پیاده سازی کرد.
public class MainClass {
public static void main(String[] args) {
IA ia=new IA();
}
}
کد بالا با خطا مواجعه میشود و امکان پیاده سازی آن مشابه کلاس وجود ندارد.
اما به کمک کلاسهای بی نام میتوان از interface درون کلاس نمونه ساخت.
مثال:
public class MainClass {
public static void main(String[] args) {
IA ia=new IA() {
@Override
public void showMessage(String message) {
System.out.println("message = " + message);
}
@Override
public void fun1(int a, int b) {
System.out.println("a+b = " + (a+b));
}
};
ia.showMessage("mehdi");
ia.fun1(23,45);
}
}
در بالا به کمک کلاس بی نام اینترفیس IA را دوباره نویسی(override) کردیم و درون شی از اینترفیس IA نگهداری کردیم و برای متدهای آن بدنه تعریف کردیم و سپس متدها را صدا زدیم.
خروجی:
Message = mehdi
A+b = 68
همانطور که میدانید اگر یک کلاس را فرزند interface کنیم(implements) کنیم باید تمام توابع درون interface را درون کلاس فرزند دوباره نویسی کنیم. اما آیا میتوان کلاسی تعریف کرد که فرزند interface شود اما متدهای آن را بازنویسی نکند؟ بله به کمک کلاسهای abstract این کار ممکن است اما زمانی که آن کلاس abstract والد کلاس معمولی میشود باید تمام متد های interface را بازنویسی کرد. در واقع در آخرین مرحله از ارتباط بین interface ها و کلاس های abstract باید تمام متدهای آنها در کلاس معمولی فرزند بازنویسی شود. برای درک بهتر این موضوع در ویدیو مثال هایی را حل میکنیم.
سپاسگزاریم که همراه ما هستید
امیدواریم که این آموزش مورد توجه شما دوستان عزیز قرار گرفته باشد و بتواند شما را در راه رسیدن به اهدافتان کمک کند. برای دسترسی بیشتر به جلسات این دوره از آموزش جاوا پیشرفته کلیک کنید.
توضیحات ذکر شده چکیده ای میباشد از آنچه که میخواهید بیاموزید، برای فهم بهتر مطالب این جلسه، میتوانید این درس را خریداری کنید و از نکات ارزشمند آن بهره مند شوید.
نظرات دانشجویان
با سلام کیفیت این جلسه غیر قابل توصیف است.بسیار عالی بود
ممنون از توجه شما جناب رمضانی عزیز
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.