رابط‌ها

از ویکی‌کد، دانشنامهٔ برنامه‌نویسی
(تغییرمسیر از رابط‌ها در جاوا)
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Java-menu.jpeg
خانه
متدها در جاوا
کلاس‌ها در جاوا
۱برنامه‌نویسی شیءگرایی
۲کلاس‌ها و اشیاء
۳خاصیت‌های کلاس
۴متدهای کلاس
۵سازنده‌ها
۶Modifier ها
۷کپسوله‌سازی
۸پکیج‌ها
۹ارث بری
۱۰چند ریختی
۱۱کلاس‌های داخلی
۱۲مفهوم انتزاعی
۱۳رابط‌ها
۱۴Enum ها
۱۵دریافت اطلاعات از کاربر
۱۶تاریخ و زمان
۱۷ArrayList
۱۸HashMap
۱۹کلاس‌های Wrapper
۲۰خطاهای جاوا
فایل‌ها در جاوا
مرجع جاوا
مثال‌های جاوا

رابط ها (Interface) در جاوا

راه دیگری برای پیاده‌سازی مفهوم انتزاعی (abstraction) در جاوا، با استفاده از اینترفیس‌ها است. [۱]

یک رابط یا interface به طور کامل یک «کلاس abstract» است که برای گروه‌بندی متدهای مرتبط به هم و بدون بدنه استفاده می‌شود:

مثال

1// interface
2interface Animal {
3  public void animalSound(); // interface method (does not have a body)
4  public void run(); // interface method (does not have a body)
5}

برای دسترسی به متدهای رابط، رابط می‌بایست توسط کلاس دیگری با کلمه کلیدی implements (به جای کلمه extends) «پیاده سازی شود» (مفهومی شبیه به ارث بری کردن). بدنه متد رابط توسط کلاسی که آن را «پیاده سازی» می‌کند فراهم می‌شود:

مثال

 1// Interface
 2interface Animal {
 3  public void animalSound(); // interface method (does not have a body)
 4  public void sleep(); // interface method (does not have a body)
 5}
 6
 7// Pig "implements" the Animal interface
 8class Pig implements Animal {
 9  public void animalSound() {
10    // The body of animalSound() is provided here
11    System.out.println("The pig says: wee wee");
12  }
13  public void sleep() {
14    // The body of sleep() is provided here
15    System.out.println("Zzz");
16  }
17}
18
19class MyMainClass {
20  public static void main(String[] args) {
21    Pig myPig = new Pig();  // Create a Pig object
22    myPig.animalSound();
23    myPig.sleep();
24  }
25}


مشاهدهٔ نتیجه

نکات رابط‌ها

  • همانند کلاس‌های abstract از رابط‌ها نمی‌توان برای ساخت اشیاء استفاده کرد. (در مثال بالا، ساختن شیء «حیوان» در کلاس MyMainClass غیرممکن است)
  • رابط‌ها بدنه ندارند. بدنه توسط کلاسی که رابط را پیاده‌سازی می‌کند، فراهم می‌شود
  • در پیاده‌سازی یک رابط ، شما می‌بایست تمام متدهای آن را بازنویسی کنید
  • متدهای رابط به صورت پیش‌فرض از نوع abstract و public هستند
  • خاصیت‌های رابط‌ها به صورت پیشفرض ، از نوع public, static و final هستند
  • یک رابط نمی‌تواند متد سازنده (constructor) داشته باشد (همان‌طور که نمی‌توان از آن برای ساخت اشیاء استفاده کرد)

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

  1. برای رسیدن به امنیت قابل قبول - پنهان کردن جزئیات اصلی و تنها نمایش مهم یک شیء (رابط)
  2. جاوا از مفهوم "ارث بری یک کلاس از چندین کلاس" پشتیبانی نمی‌کند. (یک کلاس تنها می‌تواند از یک کلاس پدر ارث بری کند).

اما، این کار را می‌توان به وسیله رابط‌ها انجام داد، چرا که یک کلاس می‌تواند چندین رابط (Interface) را پیاده‌سازی کند.

نکته نکته: برای پیاده‌سازی کردن چندین رابط، آنها را به وسیله جدا کننده ویرگول , از یکدیگر جدا کنید (مثال زیر را ببینید).

چندین رابط کاربری

برای پیاده‌سازی چندین رابط، آنها را با یک ویرگول , از یکدیگر جدا کنید:

مثال

 1interface FirstInterface {
 2  public void myMethod(); // interface method
 3}
 4
 5interface SecondInterface {
 6  public void myOtherMethod(); // interface method
 7}
 8
 9class DemoClass implements FirstInterface, SecondInterface {
10  public void myMethod() {
11    System.out.println("Some text..");
12  }
13  public void myOtherMethod() {
14    System.out.println("Some other text...");
15  }
16}
17
18class MyMainClass {
19  public static void main(String[] args) {
20    DemoClass myObj = new DemoClass();
21    myObj.myMethod();
22    myObj.myOtherMethod();
23  }
24}


مشاهدهٔ نتیجه


منابع آموزشی