כיתות ואובייקטים ב-Java
ב-Java מחלקות ואובייקטים מהווים את הבסיס לתכנות מונחה עצמים (OOP). הם עוזרים לדגמן ישויות בעולם האמיתי ולארגן קוד בצורה מובנית.
- מחלקה היא שרטוט המשמש ליצירת אובייקטים שחולקים מאפיינים והתנהגות משותפים.
- אובייקט הוא מופע של מחלקה. הוא מייצג ישות ספציפית שנוצרה מתבנית הכיתה.
למשל כלב הוא מחלקה טומי הוא אובייקט של המחלקה הזו.
כיתות וחפצים (כאן כלב הוא הכיתה ובובי הוא אובייקט) כיתת ג'אווה
מחלקה היא שרטוט המגדיר נתונים והתנהגות עבור אובייקטים. הוא מקבץ תחומים ושיטות קשורים ביחידה אחת. זיכרון עבור חבריו מוקצה רק כאשר אובייקט נוצר.
- פועל כתבנית ליצירת אובייקטים עם מבנה משותף.
- אינו תופס זיכרון עבור שדות עד המופע.
- יכול להכיל שדות שיטות בנאים מחלקות וממשקים מקוננים.
class Student { int id ; String n ; public Student ( int id String n ) { this . id = id ; this . n = n ; } } public class Main { public static void main ( String [] args ) { Student s1 = new Student ( 10 'Alice' ); System . out . println ( s1 . id ); System . out . println ( s1 . n ); } }
תְפוּקָה
10 Alice
אובייקטי Java
אובייקט הוא מופע של מחלקה שנוצרה כדי לגשת לנתונים ולפעולות שלו. כל חפץ מחזיק במצב משלו.
- מְדִינָה : ערכים המאוחסנים בשדות.
- הִתְנַהֲגוּת : פעולות המוגדרות באמצעות שיטות.
- זֶהוּת : מבדיל בין אובייקט אחד למשנהו.
חפצים משקפים פריטים מהעולם האמיתי, כגון מוצר או עיגול של הלקוח. אובייקטים לא פרימיטיביים מאוחסנים בערימה בזמן שההפניות שלהם נשארות בערימה.
אובייקטי Java (דוגמה של כלבים) מופע אובייקט
יצירת אובייקט ידועה בשם מופע. כל המופעים של כיתה חולקים מבנה והתנהגות תוך אחסון ערכי מצב שונים.
הצהרת אובייקט Java הַצהָרָה:
טאפי כלב;
זה רק מצהיר על התייחסות. האובייקט לא נוצר וההפניה מחזיקה ב-null.
אִתחוּל:
tuffy = new Dog('Tuffy' 'Papillon' 5 'White');
אִתחוּל האופרטור החדש מקצה זיכרון ומפעיל את הבנאי.
דוגמה: הגדרה ושימוש בכיתה
Java public class Dog { String name ; String breed ; int age ; String color ; public Dog ( String name String breed int age String color ) { this . name = name ; this . breed = breed ; this . age = age ; this . color = color ; } public String getName () { return name ; } public String getBreed () { return breed ; } public int getAge () { return age ; } public String getColor () { return color ; } @Override public String toString () { return 'Name is: ' + name + 'nBreed age and color are: ' + breed + ' ' + age + ' ' + color ; } public static void main ( String [] args ) { Dog tuffy = new Dog ( 'tuffy' 'papillon' 5 'white' ); System . out . println ( tuffy ); } }
תְפוּקָה
Name is: tuffy Breed age and color are: papillon 5 white
פֶּתֶק: לכל מחלקה יש לפחות בנאי אחד. אם אין מוגדר ג'אווה מספקת בנאי ברירת מחדל ללא ארגומנט שקורא לבנאי האב.
אתחול אובייקט באמצעות שיטה/פונקציה
Java public class Geeks { static String name ; static float price ; static void set ( String n float p ) { name = n ; price = p ; } static void get () { System . out . println ( 'Software name is: ' + name ); System . out . println ( 'Software price is: ' + price ); } public static void main ( String [] args ) { Geeks . set ( 'Visual Studio' 0.0f ); Geeks . get (); } }
תְפוּקָה
Software name is: Visual Studio Software price is: 0.0
דרכים ליצור אובייקט ב-Java
Java תומכת בארבע גישות סטנדרטיות.
1. שימוש במילת מפתח חדשה
הדרך הישירה ביותר ליצור אובייקט.
Java // creating object of class Test Test t = new Test ();
2. שימוש ברפלקציה
משמש לטעינת מחלקות דינמית כפי שניתן לראות במסגרות כמו Spring.
Java class Student { public Student () {} } public class Main { public static void main ( String [] args ) { try { Class > c = Class . forName ( 'Student' ); Student s = ( Student ) c . getDeclaredConstructor (). newInstance (); System . out . println ( s ); } catch ( Exception e ) { e . printStackTrace (); } } }
תְפוּקָה
Student@1dbd16a6
3. שימוש בשיטת clone()
clone() יוצר עותק של אובייקט קיים. המחלקה חייבת ליישם Cloneable.
Java class Geeks implements Cloneable { String name = 'GeeksForGeeks' ; @Override protected Object clone () throws CloneNotSupportedException { return super . clone (); } public static void main ( String [] args ) { try { Geeks g1 = new Geeks (); Geeks g2 = ( Geeks ) g1 . clone (); System . out . println ( g2 . name ); } catch ( Exception e ) { e . printStackTrace (); } } }
תְפוּקָה
GeeksForGeeks
4. שימוש בסידריאליזציה
דה-סריאליזציה היא טכניקה של קריאת אובייקט מהמצב השמור בקובץ. האובייקט נוצר מחדש מזרם בתים מאוחסן.
עיין ב סריאליזציה/דה-סריאליזציה ב-Java .
Java import java.io.* ; class Student implements Serializable { private String name ; public Student ( String name ) { this . name = name ; } public String toString () { return 'Student: ' + name ; } } public class Main { public static void main ( String [] args ) { try ( ObjectOutputStream out = new ObjectOutputStream ( new FileOutputStream ( 'student.ser' ))) { out . writeObject ( new Student ( 'Alice' )); } catch ( IOException e ) { e . printStackTrace (); } try ( ObjectInputStream in = new ObjectInputStream ( new FileInputStream ( 'student.ser' ))) { Student s = ( Student ) in . readObject (); System . out . println ( s ); } catch ( Exception e ) { e . printStackTrace (); } } }
תְפוּקָה
Student: Alice
הפניה בודדת יכולה להצביע על אובייקטים שונים בזמנים שונים.
Java Test test = new Test (); test = new Test ();
בירושה מקובל להשתמש בהפנית הורה עבור אובייקטים צאצאים.
Java Animal obj = new Dog (); obj = new Cat ();
חפצים ללא הפניה הופכים לזכאים לאיסוף אשפה.
אובייקטים אנונימיים
אובייקטים אנונימיים נוצרים ללא הפניה ומשמשים באופן מיידי לפעולות חד פעמיות.
- אין משתנה התייחסות: לא ניתן לעשות שימוש חוזר באובייקט.
- נוצר ובשימוש מיידי חוסך זיכרון למשימות קצרות מועד.
- נפוץ בטיפול באירועים (למשל לחיצות כפתורים).
new Dog ( 'Max' 'Labrador' 3 'Black' ). getName ();
נפוץ בטיפול באירועי ממשק משתמש.
צור חידון