User Tools

Site Tools


java:inheritance

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:inheritance [2021/03/05 15:31] – [Κληρονομικότητα] gthanosjava:inheritance [2022/03/11 05:21] (current) gthanos
Line 10: Line 10:
  
 <code java BasicRectangle.java> <code java BasicRectangle.java>
-class BasicRectangle {+public class BasicRectangle {
          
   int width;   int width;
   int height;   int height;
    
-  public Rectangle(int initWidth, int initHeight) {+  public BasicRectangle(int initWidth, int initHeight) {
     width = initWidth;     width = initWidth;
     height = initHeight;     height = initHeight;
   }   }
  
-  void setWidth(int newWidth ) {+  public void setWidth(int newWidth ) {
     width = newWidth;     width = newWidth;
   }   }
          
-  void setHeight(int newHeight ) {+  public void setHeight(int newHeight ) {
     height = newHeight;     height = newHeight;
   }   }
      
-  int getWidth() {+  public int getWidth() {
     return width;     return width;
   }   }
          
-  int getHeight() {+  public int getHeight() {
     return height;     return height;
   }   }
      
-  int area() { +  public String toString() { 
-    return width height;+    return "width: "+width+", height: "+height;
   }   }
- 
 } }
 </code> </code>
Line 67: Line 66:
   void setY(int yPos) {   void setY(int yPos) {
     y = yPos;     y = yPos;
 +  }
 +  
 +  public String toString() {
 +    return "("+x+","+y+")";
   }   }
 } }
Line 72: Line 75:
  
 <code java Rectangle.java> <code java Rectangle.java>
-class Rectangle extends BasicRectangle{+public class Rectangle extends BasicRectangle {
          
   Point origin;   Point origin;
Line 86: Line 89:
   }   }
          
-  void setOrigin(Point newOrigin) {+  public void setOrigin(Point newOrigin) {
     origin = newOrigin;     origin = newOrigin;
   }   }
      
-  Point getOrigin() {+  public Point getOrigin() {
     return origin;     return origin;
 +  }
 +  
 +  int area() {
 +    return width * height;
   }   }
        
   // Move rectangle origin by dx,dy   // Move rectangle origin by dx,dy
-  void moveOrigin(int dx, int dy) {+  public void moveOrigin(int dx, int dy) {
     origin.setX( origin.getX() + dx );     origin.setX( origin.getX() + dx );
     origin.setY( origin.getY() + dy );     origin.setY( origin.getY() + dy );
 +  }
 +  
 +  public String toString() {
 +    String str = origin.toString() + " ";
 +    str = str + super.toString();
 +    return str;
   }   }
 } }
Line 107: Line 120:
  
   * Η κλάση //BasicRectangle// έχει τα πεδία //width, height//, ενώ η κλάση //Rectangle// διαθέτει τα πεδία αυτά και επιπλέον το πεδίο //origin//.   * Η κλάση //BasicRectangle// έχει τα πεδία //width, height//, ενώ η κλάση //Rectangle// διαθέτει τα πεδία αυτά και επιπλέον το πεδίο //origin//.
-  * Τα πεδία της κλάσης //Bicycle// είναι private. H πρόσβαση στα πεδία αυτά μπορεί να γίνει μόνο μέσω των public μεθόδων που διαθέτει η κλάση και έχοντας πρόσβαση απευθείας πάνω στα συγκεκριμένα πεδία. 
   * Βασικό χαρακτηριστικό της κληρονομικότητας είναι ότι η κληρονομούμενη κλάση έχει όλα τα  χαρακτηριστικά της γονικής κλάσης. Υπό αυτή την έννοια, τα αντικείμενα της κλάσης //Rectangle// είναι και του τύπου //BasicRectangle//.   * Βασικό χαρακτηριστικό της κληρονομικότητας είναι ότι η κληρονομούμενη κλάση έχει όλα τα  χαρακτηριστικά της γονικής κλάσης. Υπό αυτή την έννοια, τα αντικείμενα της κλάσης //Rectangle// είναι και του τύπου //BasicRectangle//.
 +  * Παρατηρήστε τη δεσμευμένη λέξη //super// ως πρώτη εντολή του κάθε κατασκευαστή. Μέσω της κλήσης //super// καλείται ο κατασκευαστής της γονικής κλάσης.
 </WRAP> </WRAP>
 ===== Προσβασιμότητα των κληρονομούμενων πεδίων ===== ===== Προσβασιμότητα των κληρονομούμενων πεδίων =====
java/inheritance.1614958261.txt.gz · Last modified: 2021/03/05 15:31 (external edit)