This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
java:member_initialization [2015/02/18 13:40] gthanos [Final Methods] |
java:member_initialization [2022/02/24 12:39] (current) |
||
|---|---|---|---|
| Line 14: | Line 14: | ||
| </ | </ | ||
| - | Η παραπάνω μέθοδος αφορά **στατικά** (static) και **μη στατικά** πεδία, προϋποθέτει όμως ότι η ανάθεση της τιμής μπορεί αν γίνει μόνο με μία εντολή (όπως παραπάνω). Πιο σύνθετες μέθοδοι ανάθεσης (π.χ. | + | Η παραπάνω μέθοδος αφορά **στατικά** (static) και **μη στατικά** πεδία, προϋποθέτει όμως ότι η ανάθεση της τιμής μπορεί αν γίνει μόνο με μία εντολή (όπως παραπάνω). Πιο σύνθετες μέθοδοι ανάθεσης (π.χ. αρχικοποίηση πινάκων) μπορούν να γίνουν μέσα στους κατασκευαστές τις κλάσης για τα μη στατικά πεδία. Η αρχικοποίηση στατικών πεδίων δεν |
| - | Για την αρχικοποίηση πεδίων εκτός από τους κατασκευαστές έχουμε τις εξής επιλογές: | + | Για την αρχικοποίηση πεδίων εκτός από τους κατασκευαστές έχουμε τις εξής |
| * για στατικά πεδία | * για στατικά πεδία | ||
| * **static initialization blocks**. | * **static initialization blocks**. | ||
| Line 28: | Line 28: | ||
| ==== Static Initialization Blocks ==== | ==== Static Initialization Blocks ==== | ||
| - | To //static initialization block// είναι ένα τμήμα κώδικα τοποθετημένο μέσα σε παρενθέσεις | + | To //static initialization block// είναι ένα τμήμα κώδικα τοποθετημένο μέσα σε άγκιστρα { } που προσδιορίζεται από τη λέξη //static//, όπως παρακάτω: |
| <code java> | <code java> | ||
| Line 52: | Line 52: | ||
| </ | </ | ||
| - | Το πλεονέκτημα των στατικών μεθόδων είναι ότι μπορούν να επαναχρησιμοποιηθούν σε περίπτωση που χρειαστεί να επανα-αρχικοποιηθεί η στατική μεταβλητή της κλάσης. | + | <WRAP tip 80% center round> |
| + | Το πλεονέκτημα των στατικών μεθόδων είναι ότι μπορούν να επαναχρησιμοποιηθούν σε περίπτωση που χρειαστεί να αρχικοποιηθεί | ||
| + | </ | ||
| ===== Αρχικοποιώντας μη-στατικά πεδία ===== | ===== Αρχικοποιώντας μη-στατικά πεδία ===== | ||
| Line 58: | Line 60: | ||
| ==== Initialization Blocks ==== | ==== Initialization Blocks ==== | ||
| - | Τα // | + | Τα // |
| ==== Final Methods ==== | ==== Final Methods ==== | ||
| - | Παρακάτω δίνεται ένα παράδειγμα χρήσης //final// μεθόδου για την αρχικοποίηση ενός μη στατικού πεδίου. Μία //final// μέθοδος δεν μπορεί να γίνει // | + | Παρακάτω δίνεται ένα παράδειγμα χρήσης //final// μεθόδου για την αρχικοποίηση ενός μη στατικού πεδίου. Μία //final// μέθοδος δεν μπορεί να γίνει // |
| <code java> | <code java> | ||
| Line 75: | Line 77: | ||
| </ | </ | ||
| - | Προφανώς | + | Προφανώς |
| - | <code java Bicycle.java> | + | ===== Παράδειγμα αρχικοποίησης στατικών και μη στατικών πεδίων ===== |
| - | public | + | |
| + | <code java Rectangle.java> | ||
| + | class Rectangle | ||
| + | |||
| + | // the Rectangle class has 3 fields | ||
| + | int width; | ||
| + | int height; | ||
| + | Point origin; | ||
| + | |||
| + | int id = initializeId(); | ||
| - | private int cadence; | + | // add a class variable for the |
| - | | + | // number of Rectangle objects instantiated |
| - | | + | static |
| - | + | ||
| - | | + | |
| - | + | | |
| - | | + | |
| - | + | } | |
| - | | + | |
| - | int startSpeed, | + | Rectangle(int initWidth, int initHeight) { |
| - | int startGear){ | + | |
| - | | + | |
| - | | + | |
| - | | + | id = ++numberOfRectangles; |
| - | + | | |
| - | | + | } |
| - | | + | |
| - | + | ||
| - | public int getID() { | + | // static method for initializing static variable. |
| - | return | + | |
| - | } | + | System.out.println(" |
| - | + | return 0; | |
| - | | + | } |
| - | System.out.println(" | + | |
| - | return 0; | + | |
| - | } | + | |
| - | | + | |
| - | static { | + | static { |
| - | System.out.println(" | + | System.out.println(" |
| - | | + | |
| - | } | + | } |
| - | | + | |
| - | { | + | { |
| - | System.out.println(" | + | id = 100; |
| - | | + | |
| - | } | + | } |
| + | |||
| + | //final method | ||
| + | final int initializeId() { | ||
| + | int _id = 200; | ||
| + | | ||
| + | return _id; | ||
| + | } | ||
| + | |||
| + | int getID() { | ||
| + | return id; | ||
| + | | ||
| - | private final int initializeId() { | + | static |
| - | | + | return |
| - | | + | } |
| - | } | + | |
| | | ||
| - | public static int getNumberOfBicycles() { | + | |
| - | return numberOfBicycles; | + | |
| - | } | + | } |
| - | + | ||
| - | public | + | int getWidth() { |
| - | cadence = newValue; | + | return |
| - | | + | } |
| - | + | ||
| - | public void setGear(int newValue) { | + | |
| - | gear = newValue; | + | |
| - | } | + | |
| - | + | ||
| - | | + | |
| - | speed -= decrement; | + | |
| - | } | + | |
| - | + | ||
| - | public void speedUp(int increment) { | + | |
| - | speed += increment; | + | |
| - | | + | |
| - | public String toString(String objName) { | + | |
| - | | + | |
| - | } | + | |
| | | ||
| - | public | + | |
| - | | + | |
| - | } | + | } |
| + | |||
| + | int getHeight() { | ||
| + | | ||
| + | | ||
| | | ||
| - | | + | void setOrigin(Point newOrigin) { |
| - | | + | origin = newOrigin; |
| - | | + | } |
| - | | + | |
| - | | + | Point getOrigin() { |
| - | + | return origin; | |
| - | | + | } |
| - | } | + | |
| + | int getArea() { | ||
| + | | ||
| + | } | ||
| + | |||
| + | String description(String objName) { | ||
| + | return " | ||
| + | } | ||
| + | |||
| + | | ||
| + | | ||
| + | Point p = new Point(10,20); | ||
| + | |||
| + | Rectangle rectOne | ||
| + | | ||
| + | | ||
| + | System.out.println(" | ||
| + | } | ||
| } | } | ||
| </ | </ | ||
| - | |Προηγούμενο: [[: | + | Το αποτέλεσμα εκτέλεσης του παραπάνω |
| - | + | < | |
| + | $ java Rectangle | ||
| + | initialize numberOfRectangles in static method | ||
| + | initialize numberOfRectangles in static block | ||
| + | ------------------------------- | ||
| + | initialize objectId in final method, id: 200 | ||
| + | initialize objectId in block, id: 100 | ||
| + | Initialized object id in constructor, | ||
| + | ------------------------------- | ||
| + | [rectOne] (id: 1) Width: 30, Height: 40 | ||
| + | Number of Rectangles: 1 | ||
| + | </ | ||
| + | <WRAP tip 80% center round> | ||
| + | Από τα παραπάνω προκύπτει ότι η σειρά εκτέλεσης μεταξύ στατικών και μη στατικών μεθόδων, | ||
| + | - Στατικές μέθοδοι | ||
| + | - Στατικά μπλοκ | ||
| + | - Μη στατικές //final// μέθοδοι | ||
| + | - Μη στατικά μπλοκ | ||
| + | - Κατασκευαστές της κλάσης | ||
| + | </ | ||
| + | |Προηγούμενο: | ||