java:member_initialization

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:member_initialization [2015/04/20 06:40]
gthanos [Final Methods]
java:member_initialization [2017/02/16 11:29] (current)
gthanos [Final Methods]
Line 28: Line 28:
 ==== Static Initialization Blocks ==== ==== Static Initialization Blocks ====
  
-To //static initialization block// είναι ένα τμήμα κώδικα τοποθετημένο μέσα σε παρενθέσεις ​{ } που προσδιορίζεται από το keyword ​static, όπως παρακάτω:​+To //static initialization block// είναι ένα τμήμα κώδικα τοποθετημένο μέσα σε άγκιστρα { } που προσδιορίζεται από τη λέξη //static//, όπως παρακάτω:​
  
 <code java> <code java>
Line 77: Line 77:
 Προφανώς η μέθοδος μπορεί να επαναχρησιμοποιηθεί και σε άλλα σημεία του κώδικα της κλάσης. Η χρήση //final// μεθόδου κρίνεται απαραίτητη για την αρχικοποίηση μη στατικών πεδίων,​ διότι σε περίπτωση ύπαρξης κληρονόμων της κλάσης μπορεί να υπάρξουν προβλήματα. Προφανώς η μέθοδος μπορεί να επαναχρησιμοποιηθεί και σε άλλα σημεία του κώδικα της κλάσης. Η χρήση //final// μεθόδου κρίνεται απαραίτητη για την αρχικοποίηση μη στατικών πεδίων,​ διότι σε περίπτωση ύπαρξης κληρονόμων της κλάσης μπορεί να υπάρξουν προβλήματα.
  
-<code java Bicycle.java> +<code java Rectangle.java> 
-public class Bicycle ​{+public class Rectangle ​{ 
 +     
 +  // the Rectangle class has 3 fields 
 +  private int width; 
 +  private int height; 
 +  private Point origin; 
 +   
 +  private int id = initializeId();​
    
-    private int cadence; +  // add a class variable for the 
-    ​private int gear; +  // number of Rectangle objects instantiated 
-    ​private int speed; +  private static int numberOfRectangles ​initNumberOfRectangles();
-  +
-    private int id  = initializeId();​ +
-  +
-    ​private static int numberOfBicycles ​initNumberOfBicycles();  +
-  +
-    public Bicycle(int startCadence,​ +
-                   int startSpeed,​ +
-                   int startGear){ +
-        gear = startGear;​ +
-        cadence = startCadence;​ +
-        speed = startSpeed;​ +
-  +
-        id = ++numberOfBicycles;​ +
-    } +
-  +
-    public int getID() { +
-        return id; +
-    }+
     ​     ​
-    ​// static method for initializing static variable. +  public Rectangle(int initWidth, int initHeight, Point initOrigin) { 
-    private static int initNumberOfBicycles() { +    this(initHeight,​ initHeight);​ 
-        System.out.println("​initialize ​numberOfBicycles ​in static method"​);​ +    origin = initOrigin;​ 
-        return 0; +  } 
-    }+   
 +  public Rectangle(int initWidth, int initHeight) { 
 +    width = initWidth;​ 
 +    height = initHeight;​ 
 +    origin = new Point(0,​0);​ 
 +    id = ++numberOfRectangles;​ 
 +    System.out.println("​Initialized object id in constructor,​ id:" + id); 
 +  } 
 +   
 +   
 +  ​// static method for initializing static variable. 
 +  private static int initNumberOfRectangles() { 
 +    System.out.println("​initialize ​numberOfRectangles ​in static method"​);​ 
 +    return 0; 
 +  }
  
-    ​//static initialization block  +  ​//static initialization block  
-    static { +  static { 
-        System.out.println("​initialize ​numberOfBicycles ​in static block"​);​ +    System.out.println("​initialize ​numberOfRectangles ​in static block"​);​ 
-        ​numberOfBicycles ​= 0; +    ​numberOfRectangles ​= 0; 
-    }+  }
  
-    ​//​non-static initialization block  +  ​//​non-static initialization block  
-    +  
-        System.out.println("​initialize objectId in block"​);​ +    id = 100; 
-        ​id ​100;  +    ​System.out.println("​initialize objectId in block, id: " ​+ id); 
-    }+  } 
 +   
 +  //final method 
 +  private final int initializeId() { 
 +    int _id 200
 +    ​System.out.println("​initialize objectId in final method, id: " + _id  ); 
 +    return _id; 
 +  } 
 +   
 +  public int getID() { 
 +    return id; 
 +  ​}
    
-    //final method +  public static ​int getNumberOfRectangles() { 
-    private final int initializeId() { +    return ​numberOfRectangles
-        ​System.out.println("​initialize objectId in final method"​);​ +  }
-        ​return ​200+
-    }+
     ​     ​
-    ​public ​static int getNumberOfBicycles() { +  ​public ​void setWidth(int newWidth ​) { 
-        ​return numberOfBicycles+    width = newWidth
-    +  
- +   
-    public ​String toString(String objName) { +  public ​int getWidth() { 
-      return ​"​["​+objName+"​."​+id+"​] Cadence: "​+cadence+",​ Gear: "​+gear+",​ Speed: "​+speed+    return ​width
-    }+  }
     ​     ​
-    ​public void printState(String objName) { +  ​public void setHeight(int newHeight ​) { 
-      ​System.out.printlntoString(objName); +    ​height = newHeight;​ 
-    }+  } 
 +   
 +  public int getHeight() { 
 +    ​return height; 
 +  ​}
     ​     ​
-    ​public static void main(String ​args[]) { +  public void setOrigin(Point newOrigin) { 
-      ​Bicycle myBike ​= new Bicycle(1, 42); +    origin = newOrigin;​ 
-      ​Bicycle yourBike ​= new Bicycle(233); +  } 
-      ​myBike.printState("myBike"); +   
-      ​yourBike.printState("yourBike"); +  public Point getOrigin() { 
-       +    return origin; 
-      ​System.out.println("​Number of bicycles: "​+ ​getNumberOfBicycles()); +  } 
-    }+   
 +  public int getArea() { 
 +       ​return width * height; 
 +  } 
 +    
 +  // Move rectangle origin by x,y 
 +  public void move(int dx, int dy) { 
 +    origin.setX( origin.getX() + dx ); 
 +    origin.setY( origin.getY() + dy ); 
 +  } 
 +   
 +  public String toString(String objName) { 
 +      return "​["​+objName+"​."​ + id + "] Width: " + width + ", Height: " + height + ", Origin: " + origin; 
 +  } 
 +   
 +  ​public static void main(String []args) { 
 +    ​System.out.println("​-------------------------------"​);​ 
 +    Point p = new Point(10,20); 
 +    ​Rectangle rectOne ​= new Rectangle(30,40p); 
 +    ​System.out.println(rectOne.toString("rectOne")); 
 +    ​System.out.println("-------------------------------"); 
 +    System.out.println("​Number of Rectangles: " + getNumberOfRectangles() ); 
 +  }
 } }
 </​code>​ </​code>​
  
-Το αποτέλεσμα εκτέλεσης το παραπάνω κώδικα είναι το παρακάτω:​+Το αποτέλεσμα εκτέλεσης του παραπάνω κώδικα είναι το παρακάτω:​
 <​code>​ <​code>​
-initialize ​numberOfBicycles ​in static method +$ java Rectangle 
-initialize ​numberOfBicycles ​in static block +initialize ​numberOfRectangles ​in static method 
-initialize objectId in final method +initialize ​numberOfRectangles ​in static block 
-initialize objectId in block +------------------------------- 
-initialize objectId ​in final method +initialize objectId in final method, id: 200 
-initialize objectId in block +initialize objectId in block, id: 100 
-[myBike.1] Cadence1Gear2Speed+Initialized object id in constructor,​ id:1 
-[yourBike.2] Cadence2Gear3, Speed: 3 +[rectOne.1] Width30Height40Origin: [Point xPos:10yPos:20] 
-Number of bicycles2+------------------------------- 
 +Number of Rectangles1
 </​code>​ </​code>​
  
-|Προηγούμενο:​ [[:​java:​static_keyword | Στατικές μεταβλητές και μέθοδοι ]] | Επόμενο:​ [[ :java:packages:​intro ​Πακέτα στη γλώσσα προγραμματισμού Java ]]|+<WRAP tip 80% center round> 
 +Από τα παραπάνω προκύπτει ότι η σειρά εκτέλεσης μεταξύ στατικών και μη στατικών μεθόδων,​ μπλοκ και κατασκευαστών είναι η εξής: 
 +  - Στατικές μέθοδοι 
 +  - Στατικά μπλοκ 
 +  - Μη στατικές //final// μέθοδοι 
 +  - Μη στατικά μπλοκ 
 +  - Κατασκευαστές της κλάσης 
 +</​WRAP>​ 
 + 
 +|Προηγούμενο:​ [[:​java:​static_keyword | Στατικές μεταβλητές και μέθοδοι ​]] | [[ :toc | Περιεχόμενα ​]] | Επόμενο:​ [[ :java:toString ​Η μέθοδος toString ​]]|
  
  
java/member_initialization.1429512006.txt.gz · Last modified: 2016/02/26 11:15 (external edit)