همانطور که یاد گرفتید، اشیا تعامل خود با دنیای بیرون را از طریق متدهایی که نمایش میدهند تعریف میکنند. متدها Interface شی با دنیای بیرون را تشکیل میدهند — مثلاً دکمههای جلوی تلویزیون Interface بین شما و سیمکشی الکتریکی داخل آن هستند. شما دکمه «روشن/خاموش» را فشار میدهید تا تلویزیون را روشن یا خاموش کنید.
در رایجترین شکل، Interface گروهی از متدهای مرتبط با بدنهای خالی است. رفتار دوچرخه بهعنوان Interface ممکن است اینطور باشد:
interface Bicycle {
// دور در دقیقه چرخ
void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}
برای پیادهسازی این Interface، نام کلاس تغییر میکند (مثلاً به یک برند خاص دوچرخه مانند ACMEBicycle) و از کلمه کلیدی implements در تعریف کلاس استفاده میشود:
class ACMEBicycle implements Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
// کامپایلر اکنون نیاز دارد متدها
// changeCadence, changeGear, speedUp, و applyBrakes
// همه پیادهسازی شوند. اگر این متدها
// در این کلاس وجود نداشته باشند، کامپایل ناموفق میشود.
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
IO.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}
پیادهسازی Interface به کلاس اجازه میدهد رسمیتر درباره رفتاری که قول ارائه آن را داده عمل کند. Interfaceها قراردادی بین کلاس و دنیای بیرون تشکیل میدهند و این قرارداد توسط کامپایلر در زمان build اجرا میشود. اگر کلاس شما ادعا کند Interfaceای را پیادهسازی میکند، تمام متدهای تعریفشده توسط آن Interface باید در کد منبع آن ظاهر شوند تا کلاس با موفقیت کامپایل شود.
نکته: برای کامپایل واقعی کلاس
ACMEBicycle، باید کلمه کلیدیpublicرا به ابتدای متدهای پیادهسازیشده Interface اضافه کنید. دلیل آن را در بخشهای بعدی کلاسها و اشیا، Interfaceها و ارثبری یاد خواهید گرفت.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://dev.java/learn/