java:static_keyword

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
java:static_keyword [2022/02/23 18:24]
gthanos [Στατικές μέθοδοι της κλάσης]
java:static_keyword [2022/02/23 18:45]
gthanos [Στατικές μεταβλητές της κλάσης]
Line 16: Line 16:
   int height;   int height;
   Point origin;   Point origin;
 +  // add an instance variable for the object ID
 +  int id;
 +  
 +    // add a class variable for the
 +  // number of Rectangle objects instantiated
 +  static int numberOfRectangles = 0;
    
   // the Rectangle class has one constructor   // the Rectangle class has one constructor
Line 22: Line 28:
     this.height = height;     this.height = height;
     this.origin = origin;     this.origin = origin;
 +    this.id = ++numberOfRectangles;
   }   }
-         
-  // add an instance variable for the object ID 
-  int id; 
      
-  // add a class variable for the +  public int getID() { 
-  // number of Rectangle objects instantiated +    return id; 
-  static int numberOfRectangles = 0;+  
 + 
 +  public static int getNumberOfRectangles() { 
 +    return numberOfRectangles; 
 +  } 
 + 
      
   /* οι υπόλοιπες εντολές της κλάσης είναι όμοιες    /* οι υπόλοιπες εντολές της κλάσης είναι όμοιες 
Line 38: Line 47:
 </code> </code>
  
-Με τον ορισμό <code java>private static int numberOfRectangles = 0;</code> δημιουργούμε μία μεταβλητή που έχει ενιαία τιμή για όλα τα αντικείμενα της κλάσης. Η μεταβλητή αυτή δεν ανήκει σε κάποιο από τα αντικείμενα, αλλά ΜΟΝΟ στην κλάση. Για τα αντικείμενα της κλάσης **Rectangle**, η συγκεκριμένη μεταβλητή μπορεί να θεωρηθεί στατική (για αυτό και η χρήση του //keyword static//).+Με τον ορισμό <code java>private static int numberOfRectangles = 0;</code> δημιουργούμε μία μεταβλητή που έχει ενιαία τιμή για όλα τα αντικείμενα της κλάσης. Η μεταβλητή αυτή δεν ανήκει σε κάποιο από τα αντικείμενα, αλλά ΜΟΝΟ στην κλάση. Για τα αντικείμενα της κλάσης **Rectangle**, η συγκεκριμένη μεταβλητή είναι κοινή.
  
 Για να προσπελάσουμε την τιμή της συγκεκριμένης μεταβλητής μπορούμε να το κάνουμε με τους εξής δύο τρόπους: Για να προσπελάσουμε την τιμή της συγκεκριμένης μεταβλητής μπορούμε να το κάνουμε με τους εξής δύο τρόπους:
Line 44: Line 53:
   - Με χρήση ενός αντικειμένου ως εξής ''Rectangle myRectangle = new Rectangle(); myRectangle.numberOfRectangles++;''.   - Με χρήση ενός αντικειμένου ως εξής ''Rectangle myRectangle = new Rectangle(); myRectangle.numberOfRectangles++;''.
  
-Και οι δύο παραπάνω τρόποι προσπέλασης είναι ισοδύναμοι για τον compiler. Ο 2ος τρόπος προσπέλασης **ΔΕΝ** συνιστάται, καθώς διαβάζοντας τον κώδικα δεν είναι σαφές αν πρόκειται για μεταβλητή που ανήκει στην κλάση ή στο αντικείμενο. Αντίθετα, ο 1ος τρόπος αφορά αποκλειστικά μεταβλητές που ανήκουν στην κλάση και για αυτό θεωρείται ορθότερος. Δείτε τον κώδικα της κλάσης **Rectangle** όπως διαμορφώνεται με την χρήση των δύο επιπλέον πεδίων και την καταγραφή του αριθμού των αντικειμένων που δημιουργούνται.+Και οι δύο παραπάνω τρόποι προσπέλασης είναι ισοδύναμοι για τον compiler. Όμως, ο 2ος τρόπος προσπέλασης **ΔΕΝ** συνιστάται, καθώς διαβάζοντας τη συγκεκριμένη γραμμή δεν είναι σαφές αν πρόκειται για μεταβλητή που ανήκει στην κλάση ή στο αντικείμενο. Αντίθετα, ο πρώτος τρόπος αφορά μεταβλητές που ανήκουν στην κλάση και για αυτό θεωρείται ορθότερος. Δείτε τον κώδικα της κλάσης **Rectangle** όπως διαμορφώνεται με την χρήση των δύο επιπλέον πεδίων και την καταγραφή του αριθμού των αντικειμένων που δημιουργούνται.
  
 <code java> <code java>
java/static_keyword.txt · Last modified: 2022/02/23 18:57 by gthanos