اینترفیس
Java interface
Interface مکانیزمی برای رسیدن انتزاع کامل در جاوا است و در آن فقط میتوان متد abstract نوشت که بدنه (body) نداشته باشد! همچنین متغیرهایی که در interface تعریف میشوند همه آنها سه قابلیت زیر را دارند:
- همه آنها public هستند.
- همه آنها static هستند.
- همه آنها final هستند.
سه دلیل وجود دارد برای استفاده از interface که شامل:
- پشتیبانی از انتزاع کامل (Fully Abstraction).
- با interface میتوانیم ارث بری چندگانه را استفاده کنیم.
- با interface ما میتوانیم میزان وابستگی را کم کنیم(loose coupling).
ارتباط کلاس با interface
یک کلاس میتواند یک کلاس دیگر را extends کند. اما ارتباط کلاس و interface بدین صورت نیست و هر کلاس میتواند یک یا چندین interface را implements کند. با این کار کلاس ما موظف میشود تمام متدهای که در interface تعریف شده و بدون بدنه هستند را پیاده سازی کامل کند. نکته آخر اینکه همانند کلاس interface ها هم میتوانند همدیگر را extends کنند.
مثال:
ما یک interface داریم به نام printable که کلاس A6 آن را implements کرده است. Interface ما یک متد به نام print دارد. پس کلاس A6 باید متد show داشته باشد. کد آن به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public interface Printable { int Min = 5; void print(); } public class A6 implements Printable{ public static void main(String[] args) { A6 a = new A6(); a.print(); } @Override public void print() { System.out.println("CodeGate"); } } |
ارث بری چندگانه
همانطور که گفتیم ارث بری چندگانه در جاوا با interface پیاده سازی میکنند. در این قسمت ما دو interface به نام printable و showable تعریف کردیم که به ترتیب دو متد به نام print و show دارند. کلاس A7 این دو interface را implements میکند. با این کار با ارث بری چندگانه را پیاده سازی کرده ایم.کد آن به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public interface Printable { void print(); } public interface Showable { void show(); } public class A7 implements Printable,Showable{ public static void main(String[] args) { A7 a = new A7(); a.print(); a.show(); } @Override public void show() { System.out.println("Team"); } @Override public void print() { System.out.println("CodeGate"); } } |
ارث بری interface در جاوا
همانند کلاس، interface ها نیز میتوانند یکدیگر را extends کنند. ما دو interface به نام printable و showable تعریف کردیم. Showable از printable ارث بری میکند. کد آن به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public interface Showable extends Printable{ void show(); } public interface Showable extends Printable{ void show(); } public class interfaceinheritence implements Showable{ public static void main(String[] args) { interfaceinheritence temp = new interfaceinheritence(); temp.print(); temp.show(); } @Override public void print() { System.out.println("CodeGate"); } @Override public void show() { System.out.println("Team"); } } |
Java interface Java interface Java interface Java interface Java interface Java interface Java interface