- מִמְשָׁק
- דוגמה לממשק
- ירושה מרובה על ידי ממשק
- מדוע ירושה מרובה נתמכת בממשק בזמן שהיא אינה נתמכת במקרה של מחלקה.
- ממשק מרקר
- ממשק מקונן
א ממשק ב-Java הוא שרטוט של כיתה. יש לו קבועים סטטיים ושיטות מופשטות.
הממשק בג'אווה הוא מנגנון להשגה הַפשָׁטָה . יכולות להיות רק שיטות מופשטות בממשק Java, לא גוף השיטה. הוא משמש להשגת הפשטה ומרובה ירושה בג'אווה .
myflixr
במילים אחרות, אפשר לומר שלממשקים יכולים להיות שיטות ומשתנים מופשטים. לא יכול להיות לו גוף שיטה.
ממשק Java גם מייצג את מערכת היחסים IS-A .
לא ניתן ליצור את זה בדיוק כמו המעמד המופשט.
מאז Java 8, אנחנו יכולים לקבל ברירת מחדל ושיטות סטטיות בממשק.
מאז Java 9, אנחנו יכולים לקבל שיטות פרטיות בממשק.
למה להשתמש בממשק Java?
יש בעיקר שלוש סיבות להשתמש בממשק. הם ניתנים להלן.
- הוא משמש להשגת הפשטה.
- לפי ממשק, אנו יכולים לתמוך בפונקציונליות של ירושה מרובה.
- זה יכול לשמש כדי להשיג צימוד רופף.
איך להכריז על ממשק?
ממשק מוכרז באמצעות מילת המפתח ממשק. הוא מספק הפשטה מוחלטת; פירושו שכל השיטות בממשק מוצהרות עם הגוף הריק, וכל השדות הם ציבוריים, סטטיים וסופיים כברירת מחדל. מחלקה המיישמת ממשק חייבת ליישם את כל השיטות המוצהרות בממשק.
תחביר:
interface { // declare constant fields // declare methods that abstract // by default. }
שיפור ממשק Java 8
מאז Java 8 , לממשק יכולות להיות שיטות ברירת מחדל וסטטיות, עליהן נדון בהמשך.
תוספת פנימית על ידי המהדר
מהדר Java מוסיף מילות מפתח ציבוריות ומופשטות לפני שיטת הממשק. יתר על כן, הוא מוסיף מילות מפתח ציבוריות, סטטיות וסופיות לפני חברי הנתונים.
במילים אחרות, שדות ממשק הם ציבוריים, סטטיים וסופיים כברירת מחדל, והשיטות הן ציבוריות ומופשטות.
הקשר בין מחלקות וממשקים
כפי שמוצג באיור המופיע למטה, מחלקה מרחיבה מחלקה אחרת, ממשק מרחיב ממשק אחר, אבל א הכיתה מיישמת ממשק .
איך לשרשר מחרוזות ב-java
דוגמה לממשק Java
בדוגמה זו, לממשק להדפסה יש רק שיטה אחת, והיישום שלה מסופק במחלקה A6.
interface printable{ void print(); } class A6 implements printable{ public void print(){System.out.println('Hello');} public static void main(String args[]){ A6 obj = new A6(); obj.print(); } }בדוק את זה עכשיו
תְפוּקָה:
Hello
דוגמה לממשק Java: ניתן לצייר
בדוגמה זו, לממשק Drawable יש רק שיטה אחת. היישום שלו מסופק על ידי שיעורי מלבן ומעגל. בתרחיש אמיתי, ממשק מוגדר על ידי מישהו אחר, אך היישום שלו מסופק על ידי ספקי הטמעה שונים. יתר על כן, הוא משמש על ידי מישהו אחר. חלק היישום מוסתר על ידי המשתמש שמשתמש בממשק.
קובץ: TestInterface1.java
//Interface declaration: by first user interface Drawable{ void draw(); } //Implementation: by second user class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class Circle implements Drawable{ public void draw(){System.out.println('drawing circle');} } //Using interface: by third user class TestInterface1{ public static void main(String args[]){ Drawable d=new Circle();//In real scenario, object is provided by method e.g. getDrawable() d.draw(); }}בדוק את זה עכשיו
תְפוּקָה:
drawing circle
דוגמה לממשק Java: בנק
בואו נראה דוגמה נוספת של ממשק java המספק את היישום של ממשק הבנק.
קובץ: TestInterface2.java
interface Bank{ float rateOfInterest(); } class SBI implements Bank{ public float rateOfInterest(){return 9.15f;} } class PNB implements Bank{ public float rateOfInterest(){return 9.7f;} } class TestInterface2{ public static void main(String[] args){ Bank b=new SBI(); System.out.println('ROI: '+b.rateOfInterest()); }}בדוק את זה עכשיו
תְפוּקָה:
ROI: 9.15
ירושה מרובה ב-Java לפי ממשק
אם מחלקה מיישמת ממשקים מרובים, או ממשק מרחיב ממשקים מרובים, זה ידוע בתור ירושה מרובה.
כיבוי מצב מפתח
interface Printable{ void print(); } interface Showable{ void show(); } class A7 implements Printable,Showable{ public void print(){System.out.println('Hello');} public void show(){System.out.println('Welcome');} public static void main(String args[]){ A7 obj = new A7(); obj.print(); obj.show(); } }בדוק את זה עכשיו
Output:Hello Welcome
ש) ירושה מרובה לא נתמכת דרך class ב-java, אבל זה אפשרי על ידי ממשק, למה?
כפי שהסברנו בפרק הירושה, ירושה מרובה אינה נתמכת במקרה של מעמד בגלל אי בהירות. עם זאת, הוא נתמך במקרה של ממשק מכיוון שאין אי בהירות. הסיבה לכך היא שהיישום שלו מסופק על ידי מחלקת היישום. לדוגמה:
interface Printable{ void print(); } interface Showable{ void print(); } class TestInterface3 implements Printable, Showable{ public void print(){System.out.println('Hello');} public static void main(String args[]){ TestInterface3 obj = new TestInterface3(); obj.print(); } }בדוק את זה עכשיו
תְפוּקָה:
Hello
כפי שניתן לראות בדוגמה שלמעלה, לממשק להדפסה ולממשק ניתן להצגה יש אותן שיטות, אך היישום שלו מסופק על ידי המחלקה TestTnterface1, כך שאין אי בהירות.
תורשת ממשק
מחלקה מיישמת ממשק, אבל ממשק אחד מרחיב ממשק אחר.
interface Printable{ void print(); } interface Showable extends Printable{ void show(); } class TestInterface4 implements Showable{ public void print(){System.out.println('Hello');} public void show(){System.out.println('Welcome');} public static void main(String args[]){ TestInterface4 obj = new TestInterface4(); obj.print(); obj.show(); } }בדוק את זה עכשיו
תְפוּקָה:
Hello Welcome
שיטת ברירת המחדל של Java 8 בממשק
מאז Java 8, אנחנו יכולים לקבל גוף השיטה בממשק. אבל אנחנו צריכים להפוך את זה לשיטת ברירת המחדל. בוא נראה דוגמה:
קובץ: TestInterfaceDefault.java
interface Drawable{ void draw(); default void msg(){System.out.println('default method');} } class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class TestInterfaceDefault{ public static void main(String args[]){ Drawable d=new Rectangle(); d.draw(); d.msg(); }}בדוק את זה עכשיו
תְפוּקָה:
drawing rectangle default method
שיטה סטטית של Java 8 בממשק
מאז Java 8, אנו יכולים לקבל שיטה סטטית בממשק. בוא נראה דוגמה:
קובץ: TestInterfaceStatic.java
ג'אווה פקטוריאלית
interface Drawable{ void draw(); static int cube(int x){return x*x*x;} } class Rectangle implements Drawable{ public void draw(){System.out.println('drawing rectangle');} } class TestInterfaceStatic{ public static void main(String args[]){ Drawable d=new Rectangle(); d.draw(); System.out.println(Drawable.cube(3)); }}בדוק את זה עכשיו
תְפוּקָה:
drawing rectangle 27
ש) מהו סמן או ממשק מתויג?
ממשק שאין לו חבר ידוע בתור סמן או ממשק מתויג, למשל, ניתן להסדרה , ניתן לשכפול, מרחוק וכו'. הם משמשים כדי לספק מידע חיוני ל-JVM כך ש-JVM עשוי לבצע פעולה שימושית כלשהי.
//How Serializable interface is written? public interface Serializable{ }
ממשק מקונן ב-Java
הערה: לממשק יכול להיות ממשק אחר המכונה ממשק מקונן. נלמד את זה בפירוט ב כיתות מקוננות פֶּרֶק. לדוגמה:
interface printable{ void print(); interface MessagePrintable{ void msg(); } }עוד על ממשק מקונן