logo

שיעור מופשט בג'אווה

מחלקה המוצהרת עם מילת המפתח המופשטת ידועה כמחלקה מופשטת ב Java . יכולות להיות לה שיטות מופשטות ולא מופשטות (שיטה עם הגוף).

לפני שנלמד את הכיתה המופשטת של Java, בואו נבין תחילה את ההפשטה ב-Java.

לפתוח קובץ עם java

הפשטה בג'אווה

הַפשָׁטָה הוא תהליך של הסתרת פרטי היישום והצגת פונקציונליות בלבד למשתמש.

דרך נוספת, היא מציגה רק דברים חיוניים למשתמש ומסתירה את הפרטים הפנימיים, למשל שליחת SMS שבו מקלידים את הטקסט ושולחים את ההודעה. אתה לא יודע את העיבוד הפנימי לגבי מסירת ההודעה.

הפשטה מאפשרת לך להתמקד במה לְהִתְנַגֵד עושה במקום איך זה עושה את זה.

דרכים להשיג הפשטה

ישנן שתי דרכים להשיג הפשטה ב-Java

  1. שיעור מופשט (0 עד 100%)
  2. ממשק (100%)

שיעור מופשט בג'אווה

מחלקה המוצהרת כמופשטת ידועה בשם an שיעור מופשט . יכולות להיות לה שיטות מופשטות ולא מופשטות. צריך להרחיב אותו וליישם את השיטה שלו. אי אפשר ליצור את זה באינסטציה.

נקודות לזכור

  • יש להצהיר על מחלקה מופשטת עם מילת מפתח אבסטרקטית.
  • יכולות להיות לה שיטות מופשטות ולא מופשטות.
  • אי אפשר ליצור את זה באינסטציה.
  • יכול להיות בנאים וגם שיטות סטטיות.
  • יכולות להיות לה שיטות סופיות שיאלצו את תת המחלקה לא לשנות את גוף השיטה.
כללים לשיעור Java Abstract

דוגמה לשיעור מופשט

 abstract class A{} 

שיטה מופשטת ב-Java

שיטה המוצהרת כמופשטת ואין לה יישום ידועה כשיטה מופשטת.

דוגמה לשיטה מופשטת

 abstract void printStatus();//no method body and abstract 

דוגמה למחלקה מופשטת שיש לה שיטה מופשטת

בדוגמה זו, Bike היא מחלקה אבסטרקטית המכילה רק שיטה מופשטת אחת. יישומו מסופק על ידי מחלקת הונדה.

 abstract class Bike{ abstract void run(); } class Honda4 extends Bike{ void run(){System.out.println('running safely');} public static void main(String args[]){ Bike obj = new Honda4(); obj.run(); } } 
בדוק את זה עכשיו
 running safely 

הבנת התרחיש האמיתי של שיעור מופשט

בדוגמה זו, Shape היא המחלקה המופשטת, והיישום שלה מסופק על ידי המחלקות Rectangle ו-Circle.

לרוב, איננו יודעים על מחלקת היישום (המוסתרת למשתמש הקצה), ואובייקט של מחלקת היישום מסופק על ידי ה- שיטת המפעל .

א שיטת המפעל היא שיטה שמחזירה את המופע של המחלקה. על שיטת המפעל נלמד בהמשך.

בדוגמה זו, אם תיצור את המופע של מחלקה Rectangle, שיטת draw() של המחלקה Rectangle תופעל.

מחרוזת ל-jsonobject

קובץ: TestAbstraction1.java

 abstract class Shape{ abstract void draw(); } //In real scenario, implementation is provided by others i.e. unknown by end user class Rectangle extends Shape{ void draw(){System.out.println('drawing rectangle');} } class Circle1 extends Shape{ void draw(){System.out.println('drawing circle');} } //In real scenario, method is called by programmer or user class TestAbstraction1{ public static void main(String args[]){ Shape s=new Circle1();//In a real scenario, object is provided through method, e.g., getShape() method s.draw(); } } 
בדוק את זה עכשיו
 drawing circle 

דוגמה נוספת למחלקה אבסטרקטית ב-java

קובץ: TestBank.java

 abstract class Bank{ abstract int getRateOfInterest(); } class SBI extends Bank{ int getRateOfInterest(){return 7;} } class PNB extends Bank{ int getRateOfInterest(){return 8;} } class TestBank{ public static void main(String args[]){ Bank b; b=new SBI(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); b=new PNB(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); }} 
בדוק את זה עכשיו
 Rate of Interest is: 7 % Rate of Interest is: 8 % 

מחלקה מופשטת הכוללת בנאי, איבר נתונים ושיטות

מחלקה מופשטת יכולה לכלול איבר נתונים, שיטה אבסטרקטית, גוף מתודה (שיטה לא מופשטת), בנאי ואפילו מתודה main().

קובץ: TestAbstraction2.java

 //Example of an abstract class that has abstract and non-abstract methods abstract class Bike{ Bike(){System.out.println('bike is created');} abstract void run(); void changeGear(){System.out.println('gear changed');} } //Creating a Child class which inherits Abstract class class Honda extends Bike{ void run(){System.out.println('running safely..');} } //Creating a Test class which calls abstract and non-abstract methods class TestAbstraction2{ public static void main(String args[]){ Bike obj = new Honda(); obj.run(); obj.changeGear(); } } 
בדוק את זה עכשיו
 bike is created running safely.. gear changed 

כלל: אם יש שיטה מופשטת במחלקה, המחלקה חייבת להיות מופשטת.

 class Bike12{ abstract void run(); } 
בדוק את זה עכשיו
 compile time error 

כלל: אם אתה מרחיב מחלקה מופשטת שיש לה שיטה מופשטת, עליך לספק את היישום של השיטה או להפוך את המחלקה הזו למופשטת.


עוד תרחיש אמיתי של שיעור מופשט

ניתן להשתמש במחלקה המופשטת גם כדי לספק יישום מסוים של מִמְשָׁק . במקרה כזה, ייתכן שמשתמש הקצה לא ייאלץ לעקוף את כל השיטות של הממשק.

הערה: אם אתה מתחיל ב-Java, למד תחילה ממשק ודלג על דוגמה זו.

 interface A{ void a(); void b(); void c(); void d(); } abstract class B implements A{ public void c(){System.out.println('I am c');} } class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
בדוק את זה עכשיו
 Output:I am a I am b I am c I am d