java:inheritance
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| java:inheritance [2020/03/27 10:52] – [Κληρονομικότητα] gthanos | java:inheritance [2022/03/11 05:21] (current) – gthanos | ||
|---|---|---|---|
| Line 5: | Line 5: | ||
| Κάθε κλάση που κληρονομεί από μία άλλη κλάση ονομάζεται υποκλάση (// | Κάθε κλάση που κληρονομεί από μία άλλη κλάση ονομάζεται υποκλάση (// | ||
| - | {{ :java:super_sub_class.jpg | }} | + | {{ :java:inheritance-1.png | }} |
| - | Όπως φαίνεται και στο παραπάνω σχήμα μία κλάση (// | + | Όπως φαίνεται και στο παραπάνω σχήμα μία κλάση (// |
| - | <code java Bicycle.java> | + | <code java BasicRectangle.java> |
| - | public class Bicycle | + | public class BasicRectangle |
| - | + | ||
| - | private int frameSize; | + | |
| - | private int gearsNumber; | + | |
| - | private String color; | + | |
| - | + | ||
| - | public Bicycle(int frameSize, int gearsNumber, | + | |
| - | this.frameSize = frameSize; | + | |
| - | this.gearsNumber = gearsNumber; | + | |
| - | this.color = color; | + | |
| - | } | + | |
| | | ||
| - | public | + | |
| - | | + | int height; |
| - | } | + | |
| - | + | public BasicRectangle(int initWidth, int initHeight) { | |
| - | public | + | width = initWidth; |
| - | | + | |
| - | } | + | |
| + | |||
| + | public | ||
| + | width = newWidth; | ||
| + | } | ||
| | | ||
| - | | + | |
| - | | + | |
| - | } | + | } |
| + | |||
| + | public int getWidth() { | ||
| + | | ||
| + | | ||
| | | ||
| - | | + | |
| - | | + | |
| - | } | + | } |
| - | + | ||
| - | public String toString() { | + | public String toString() { |
| - | return "frame: "+frameSize+", | + | return "width: "+width+", |
| - | } | + | } |
| } | } | ||
| </ | </ | ||
| - | <code java MountainBike.java> | + | <code java Point.java> |
| - | public class MountainBike | + | class Point { |
| + | int x; // x coordinate | ||
| + | int y; // y coordinate | ||
| + | |||
| + | public Point(int xPos, int yPos) { | ||
| + | x = xPos; | ||
| + | y = yPos; | ||
| + | } | ||
| + | |||
| + | int getX() { | ||
| + | return x; | ||
| + | } | ||
| + | |||
| + | void setX(int xPos) { | ||
| + | x = xPos; | ||
| + | } | ||
| + | |||
| + | int getY() { | ||
| + | return y; | ||
| + | } | ||
| + | |||
| + | void setY(int yPos) { | ||
| + | y = yPos; | ||
| + | } | ||
| + | |||
| + | public String toString() { | ||
| + | return " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code java Rectangle.java> | ||
| + | public class Rectangle | ||
| | | ||
| - | private boolean suspension; | + | Point origin; |
| | | ||
| - | | + | |
| - | super(frameSize, gearsNumber, | + | super(initWidth, initHeight); |
| - | | + | |
| - | } | + | } |
| + | |||
| + | public Rectangle(int initWidth, int initHeight, int originX, int originY) { | ||
| + | | ||
| + | origin = new Point(originX, | ||
| + | | ||
| | | ||
| - | | + | |
| - | | + | |
| - | } | + | } |
| - | + | ||
| - | public | + | public |
| - | // | + | |
| - | | + | } |
| - | } | + | |
| - | + | int area() { | |
| - | public String toString() { | + | return width * height; |
| - | String str = ", hasSuspension: | + | } |
| - | | + | |
| - | } | + | // |
| + | | ||
| + | origin.setX( origin.getX() + dx ); | ||
| + | | ||
| + | | ||
| + | |||
| + | public String toString() { | ||
| + | String str = origin.toString() | ||
| + | str = str + super.toString(); | ||
| + | | ||
| + | | ||
| } | } | ||
| </ | </ | ||
| <WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
| + | |||
| === Παρατηρήσεις === | === Παρατηρήσεις === | ||
| - | // | + | |
| - | * Η κλάση | + | * Η κλάση |
| - | * Τα πεδία της κλάσης //Bicycle// είναι private. H πρόσβαση στα πεδία αυτά μπορεί να γίνει μόνο μέσω των public μεθόδων που διαθέτει η κλάση και έχοντας πρόσβαση απευθείας πάνω στα συγκεκριμένα πεδία. | + | * Βασικό χαρακτηριστικό της κληρονομικότητας είναι ότι η κληρονομούμενη κλάση έχει όλα τα χαρακτηριστικά της γονικής |
| - | * Βασικό χαρακτηριστικό της κληρονομικότητας είναι ότι η κληρονομούμενη κλάση έχει όλα τα // | + | * Παρατηρήστε τη δεσμευμένη λέξη //super// ως πρώτη εντολή του |
| </ | </ | ||
| ===== Προσβασιμότητα των κληρονομούμενων πεδίων ===== | ===== Προσβασιμότητα των κληρονομούμενων πεδίων ===== | ||
java/inheritance.1585306359.txt.gz · Last modified: 2020/03/27 10:52 (external edit)
