JavaRush /وبلاگ جاوا /Random-FA /چرا رابط ها مورد نیاز هستند؟
Павел
مرحله

چرا رابط ها مورد نیاز هستند؟

در گروه منتشر شد
چرا رابط ها مورد نیاز هستند؟ چرا وراثت رابط ضروری است؟ چرا پلی مورفیسم مورد نیاز است؟ برای کسانی که مطالعه کردند و فهمیدند که چگونه رابط ایجاد کنند، اما دلیل آن را متوجه نشدند.

سلب مسئولیت: در این مقاله و مقالات بعدی، نام کلاس ها و متدها به زبان روسی آورده خواهد شد.

وقتی صحبت از اصول برنامه نویسی شی گرا (OOP) می شود: چندشکلی، وراثت، و کپسوله سازی، استفاده از قیاس های دنیای واقعی مفید است. مزیت بزرگ OOP این است که می توانیم بخشی از جهان واقعی را در برنامه شبیه سازی کنیم. بیایید از خانواده ایوانف الگوبرداری کنیم: پدر ، مامان و پسر پتیا . از پدر، پتیا عادت چرت زدن هنگام نوشیدن چای را به ارث برده است و از مادر، عادت به فشردن لب هایش هنگام مطالعه را به ارث برده است. اگر بخواهیم این وضعیت را در یک برنامه پیاده سازی کنیم، در نهایت به سه کلاس خواهیم رسید:
class Папа
class Мама
class Петя
پدر و مامان عادت هایی دارند که باید به پیت منتقل شوند . عادت ها به نوعی اعمال هستند - بنابراین بهتر است آنها را در دنیای نرم افزار به عنوان روش پیاده سازی کنید: اول پدر :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
حالا مامان :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
اگر در مورد وراثت صحبت می کنیم، منطقی است که کد را به این صورت بنویسیم:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
یعنی پتیا را همزمان از بابا و مامان به ارث ببرند. اگر آن را به این صورت بنویسید، کامپایلر شکایت می کند زیرا جاوا نمی تواند وراثت چند کلاسه را پیاده سازی کند. به هر حال، در C++ امکان پذیر است، اما در جاوا نه، زیرا مشکلات بزرگی ممکن است با ارث بردن چندگانه ایجاد شود: آنها با جزئیات در اینترنت می نویسند . چرا رابط ها مورد نیاز هستند؟  - 1برای دور زدن این «غیرممکن»، جاوا دارای رابط هایی است. و برای عادات ما با رابط کاربری خودمان خواهیم آمد. حتی دو: آنها به این شکل خواهند بود:
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
در رابط، ما فقط عادت ها را شرح دادیم، اما آنچه را که آنها به طور خاص انجام می دهند، توضیح ندادیم، زیرا پیاده سازی خاص را در کلاس ها خواهیم نوشت. اول، بیایید به بابا و مامان عادت های قانونی آنها را بدهیم.
class Папа implements ПривычкиПапы {

   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}

class Мама implements ПривычкиМамы{

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
و اکنون، انتقال همزمان عادات از پدر و مادر به پیت کاملا قانونی است
class Петя implements ПривычкиПапы, ПривычкиМамы {

@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
یعنی پیاده سازی چندگانه (اغلب به نام پیاده سازی) در جاوا کاملاً امکان پذیر است. چرا رابط ها مورد نیاز هستند؟  - 2معنای رابط ها اکنون باید واضح باشد - در جاوا، می توانید ارث بری چندگانه را با استفاده از رابط ها پیاده سازی کنید. اگر وضعیت را بیشتر توسعه دهیم، مثلاً: بالاخره پدر و مادر احتمالاً عادت هایی دارند که به پتیا منتقل نکرده اند و پتیا نیز ممکن است عادات شخصی خودش را داشته باشد. نحوه انتقال این سانتا باربارای حیاتی به هواپیمای جاوا را در قسمت های بعدی خواهید آموخت. این تنها مثال برای درک رابط‌ها نیست. اگر مقاله‌های زیر را نخوانده‌اید، حتماً بخوانید: رابط‌ها در جاوا (اگر باز نیست، می‌توانید از نمایه خود خارج شوید یا در حالت ناشناس بخوانید) چرا رابط‌ها در جاوا - تمام مثال های مقاله را در اینجا پیاده سازی کنید و متدها را هم در رابط ها و هم در کلاس ها تغییر دهید: نام متدها، امضاها (آنچه متد به عنوان ورودی می گیرد)، انواع خروجی روش ها. به تنهایی درک کنید: - تفاوت در پیاده سازی یک رابط با یک کلاس و یک کلاس انتزاعی. - روش های پیش فرض
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION