כיתות ואובייקטים ב-Java

כיתות ואובייקטים ב-Java

ב-Java מחלקות ואובייקטים מהווים את הבסיס לתכנות מונחה עצמים (OOP). הם עוזרים לדגמן ישויות בעולם האמיתי ולארגן קוד בצורה מובנית.

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

למשל כלב הוא מחלקה טומי הוא אובייקט של המחלקה הזו.

Class_Object_exampleכיתות וחפצים (כאן כלב הוא הכיתה ובובי הוא אובייקט)

כיתת ג'אווה

מחלקה היא שרטוט המגדיר נתונים והתנהגות עבור אובייקטים. הוא מקבץ תחומים ושיטות קשורים ביחידה אחת. זיכרון עבור חבריו מוקצה רק כאשר אובייקט נוצר.

  • פועל כתבנית ליצירת אובייקטים עם מבנה משותף.
  • אינו תופס זיכרון עבור שדות עד המופע.
  • יכול להכיל שדות שיטות בנאים מחלקות וממשקים מקוננים.
Java
   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 (דוגמה של כלבים)

מופע אובייקט

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

הכרזה על אובייקטים ב-Javaהצהרת אובייקט Java

הַצהָרָה:

טאפי כלב;

זה רק מצהיר על התייחסות. האובייקט לא נוצר וההפניה מחזיקה ב-null.

אִתחוּל:

tuffy = new Dog('Tuffy' 'Papillon' 5 'White');

Classes-and-Objects-in-Java-3-768אִתחוּל

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

דוגמה: הגדרה ושימוש בכיתה

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  ();   

חפצים ללא הפניה הופכים לזכאים לאיסוף אשפה.

אובייקטים אנונימיים

אובייקטים אנונימיים נוצרים ללא הפניה ומשמשים באופן מיידי לפעולות חד פעמיות.

  • אין משתנה התייחסות: לא ניתן לעשות שימוש חוזר באובייקט.
  • נוצר ובשימוש מיידי חוסך זיכרון למשימות קצרות מועד.
  • נפוץ בטיפול באירועים (למשל לחיצות כפתורים).
Java
   new     Dog  (  'Max'       'Labrador'       3       'Black'  ).  getName  ();   

נפוץ בטיפול באירועי ממשק משתמש.

צור חידון