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
Previous revision
java:static_keyword [2017/02/16 10:56]
gthanos [Στατικές μεταβλητές και μέθοδοι της κλάσης]
java:static_keyword [2017/03/03 16:36] (current)
gthanos [Στατικές μεταβλητές της κλάσης]
Line 6: Line 6:
  
 <WRAP tip 80% center round> <WRAP tip 80% center round>
-Με την έννοια ​αυτήοι συγκεκριμένες μέθοδοι και πεδία είναι στατικά για τα αντικείμενα της κλάσης. Για παράδειγμα,​ αν προσπελάσουμε την τιμή ενός πεδίου που ανήκει στην κλάση από δύο διαφορετικά αντικείμενα της ίδιας κλάσης τότε θα διαβάσουμε ακριβώς την ίδια τιμή.+Εάν τα πεδία ή οι μέθοδοι ανήκουν στη ​κλάση ​και όχι στα αντικείμενα της τότε οι μέθοδοι και ​τα πεδία είναι στατικά για τα αντικείμενα της κλάσης. Για παράδειγμα,​ αν προσπελάσουμε την τιμή ενός πεδίου που ανήκει στην κλάση από δύο διαφορετικά αντικείμενα της κλάσης τότε θα διαβάσουμε ακριβώς την ίδια τιμή.
 </​WRAP>​ </​WRAP>​
- 
- 
- 
 ===== Στατικές μεταβλητές της κλάσης ===== ===== Στατικές μεταβλητές της κλάσης =====
  
Line 50: Line 47:
 Και οι δύο παραπάνω τρόποι προσπέλασης είναι ισοδύναμοι για τον compiler. Ο 2ος τρόπος προσπέλασης **ΔΕΝ** συνιστάται,​ καθώς δεν είναι σαφές αν πρόκειται για μεταβλητή που ανήκει στην κλάση ή στο αντικείμενο. Αντίθετα,​ ο 1ος τρόπος αφορά αποκλειστικά μεταβλητές που ανήκουν στην κλάση και για αυτό θεωρείται προγραμματιστικά ορθότερος. Δείτε τον κώδικα της κλάσης **Rectangle** όπως διαμορφώνεται με την χρήση των δύο επιπλέον πεδίων και την καταγραφή του αριθμού των αντικειμένων που δημιουργούνται. Και οι δύο παραπάνω τρόποι προσπέλασης είναι ισοδύναμοι για τον compiler. Ο 2ος τρόπος προσπέλασης **ΔΕΝ** συνιστάται,​ καθώς δεν είναι σαφές αν πρόκειται για μεταβλητή που ανήκει στην κλάση ή στο αντικείμενο. Αντίθετα,​ ο 1ος τρόπος αφορά αποκλειστικά μεταβλητές που ανήκουν στην κλάση και για αυτό θεωρείται προγραμματιστικά ορθότερος. Δείτε τον κώδικα της κλάσης **Rectangle** όπως διαμορφώνεται με την χρήση των δύο επιπλέον πεδίων και την καταγραφή του αριθμού των αντικειμένων που δημιουργούνται.
  
-<code java>+<​code ​java Rectangle.java>
 public class Rectangle { public class Rectangle {
- +     
 +  // fields
   private int width;   private int width;
   private int height;   private int height;
   private Point origin;   private Point origin;
-  
-  // the Rectangle class has one constructor 
-  public Rectangle(int width, int height, Point origin) { 
-    this.width = width; 
-    this.height = height; 
-    this.origin = origin; 
-  } 
-        ​ 
   // add an instance variable for the object ID   // add an instance variable for the object ID
   private int id;   private int id;
Line 70: Line 60:
   // number of Rectangle objects instantiated   // number of Rectangle objects instantiated
   private static int numberOfRectangles = 0;   private static int numberOfRectangles = 0;
 +
 +  // constructors
 +  public Rectangle(int initWidth, int initHeight, Point initOrigin) {
 +    width = initWidth;
 +    height = initHeight;
 +    origin = initOrigin;
 +    id = ++numberOfRectangles;​
 +  }
  
   public int getID() {   public int getID() {
Line 78: Line 76:
     return numberOfRectangles;​     return numberOfRectangles;​
   }   }
- +    ​ 
-  /* Ο κώδικας από εδώ και κάτω είναι ίδιος με προηγούμενες +  // methods 
-   * εκδόσεις τις κλάσης και παραλείπεται για λόγους οικονομίας +  ​public void setWidth(int newWidth ) { 
-   ​χώρου. +    width = newWidth; 
-   */+  } 
 +   
 +  public int getWidth() { 
 +    return width; 
 +  } 
 +     
 +  public void setHeight(int newHeight ) { 
 +    height = newHeight;​ 
 +  } 
 +   
 +  public int getHeight() { 
 +    return height; 
 +  } 
 +     
 +  public void setOrigin(Point newOrigin) { 
 +    origin = newOrigin;​ 
 +  } 
 +   
 +  public Point getOrigin() { 
 +    return origin; 
 +  } 
 +   
 +  public int getArea() { 
 +       ​return width height; 
 +  } 
 +    
 +  ​// Move rectangle origin by dx,dy 
 +  public void move(int dx, int dy) { 
 +    origin.setX( origin.getX() + dx ); 
 +    origin.setY( origin.getY() + dy ); 
 +  }
 } }
 </​code>​ </​code>​
java/static_keyword.1487242561.txt.gz · Last modified: 2017/02/16 10:56 by gthanos