This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
java:static_keyword [2017/02/16 10:57] gthanos [Στατικές μεταβλητές και μέθοδοι της κλάσης] |
java:static_keyword [2017/03/03 16:36] (current) gthanos [Στατικές μεταβλητές της κλάσης] |
||
|---|---|---|---|
| Line 47: | 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 67: | 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 75: | 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> | ||