java:class
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
java:class [2016/01/22 12:45] – [Η Κλάση] gthanos | java:class [2022/02/22 15:38] (current) – gthanos | ||
---|---|---|---|
Line 7: | Line 7: | ||
- **μεθόδους (methods)** | - **μεθόδους (methods)** | ||
- | Για τις ανάγκες του παρόντος κεφαλαίου θα ορίσουμε την κλάση **Rectangle** που απεικονίζει ένα ορθογώνιο παραλληλόγραμμο. Παρακάτω ορίζουμε την κλάση αυτή. | + | Για τις ανάγκες του παρόντος κεφαλαίου θα ορίσουμε την κλάση **Rectangle** που απεικονίζει ένα ορθογώνιο παραλληλόγραμμο. Παρακάτω ορίζουμε την κλάση αυτή |
<code java Rectangle.java> | <code java Rectangle.java> | ||
- | public | + | class Rectangle { |
| | ||
- | | + | int width; |
- | public | + | int height; |
- | | + | |
- | | + | public Rectangle(int |
- | //to store information in RGB format) | + | width = initWidth; |
- | + | height = initHeight; | |
- | // the Rectangle class has one constructor | + | |
- | public Rectangle(int | + | |
- | width = setWidth; | + | |
- | height = setHeight; | + | |
- | color = setColor; | + | |
} | } | ||
- | | + | |
- | | + | void setWidth(int newWidth ) { |
- | public | + | |
width = newWidth; | width = newWidth; | ||
} | } | ||
| | ||
- | | + | void setHeight(int newHeight ) { |
height = newHeight; | height = newHeight; | ||
+ | } | ||
+ | | ||
+ | int getWidth() { | ||
+ | return width; | ||
} | } | ||
| | ||
- | | + | int getHeight() { |
- | | + | |
} | } | ||
| | ||
- | | + | |
- | return | + | return width * height; |
- | | + | } |
- | } | + | |
+ | } | ||
</ | </ | ||
- | Παρατηρήστε ότι η παραπάνω κλάση αποτελείται από πεδία: | + | Παρατηρήστε ότι η παραπάνω κλάση αποτελείται από |
- | * την μεταβλητή **width** που συμβολίζει το πλάτος του παραλληλογράμμου. | + | * την |
- | * την μεταβλητή **height** που συμβολίζει το ύψος του παραλληλογράμμου. | + | * την |
- | * την μεταβλητή **color** που είναι πίνακας τριών θέσεων και συμβολίζει το χρώμα του παραλληλογράμμου σε μορφή [[wp> | + | |
και τις παρακάτω μεθόδους: | και τις παρακάτω μεθόδους: | ||
<code java> | <code java> | ||
- | public | + | |
- | public | + | void setHeight(int newHeight |
- | public void setGear(int newValue); | + | int getWidth(); |
- | public void applyBrake(int decrement); | + | int getHeight(); |
- | public void speedUp(int increment); | + | int area(); |
</ | </ | ||
- | Προς το παρόν αγνοήστε τον προσδιοριστή **public** μπροστά από τα πεδία και τις μεθόδους, | + | === Ο κατασκευαστής της κλάσης === |
- | + | ||
- | ===== Ο κατασκευαστής της κλάσης | + | |
Εκτός από τις παραπάνω μεθόδους η κλάση διαθέτει μία " | Εκτός από τις παραπάνω μεθόδους η κλάση διαθέτει μία " | ||
<code java> | <code java> | ||
- | public | + | public |
</ | </ | ||
Line 73: | Line 68: | ||
- Δεσμεύει την απαραίτητη μνήμη για την αποθήκευση του αντικειμένου που δημιουργείται. | - Δεσμεύει την απαραίτητη μνήμη για την αποθήκευση του αντικειμένου που δημιουργείται. | ||
- Αρχικοποιεί τα δεδομένα ενός αντικειμένου, | - Αρχικοποιεί τα δεδομένα ενός αντικειμένου, | ||
- | - Επιστρέφει ένα δείκτη στην αρχή της περιοχής που έχει δημιουργηθεί το νέο αντικείμενο της κλάσης. Υπό αυτή την έννοια, | + | - Επιστρέφει ένα δείκτη στην αρχή της περιοχής που έχει δημιουργηθεί το νέο αντικείμενο της κλάσης. Υπό αυτή την έννοια, |
<WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
- | Η κάθε κλήση του κατασκευαστή της κλάσης δημιουργεί και επιστρέφει ένα αντικείμενο | + | Κάθε κλήση του κατασκευαστή της κλάσης δημιουργεί και επιστρέφει ένα |
- | Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή (**// | + | Κάθε κλάση έχει τουλάχιστον ένα κατασκευαστή (**// |
- | <code java> | + | Για την παραπάνω κλάση |
- | public Bicycle() { | + | |
- | } | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | /* | + | |
- | ====== Κληρονομικότητα Κλάσης ====== | + | |
- | + | ||
- | Η κλάση | + | |
- | + | ||
- | <code java MountainBike.java> | + | |
- | public class MountainBike extends Bicycle { | + | |
- | + | ||
- | // the MountainBike subclass has | + | |
- | // one field | + | |
- | public int seatHeight; | + | |
- | + | ||
- | // the MountainBike subclass has | + | |
- | // one constructor | + | |
- | public MountainBike(int startHeight, | + | |
- | int startSpeed, int startGear) { | + | |
- | super(startCadence, | + | |
- | seatHeight = startHeight; | + | |
- | } | + | |
- | + | ||
- | // the MountainBike subclass has | + | |
- | // one method | + | |
- | public void setHeight(int newValue) { | + | |
- | seatHeight = newValue; | + | |
- | } | + | |
- | + | ||
- | } | + | |
- | </ | + | |
- | + | ||
- | Η σχέση | + | |
<code java> | <code java> | ||
- | public | + | public |
- | .... | + | |
} | } | ||
</ | </ | ||
- | |||
- | H κλάση '' | ||
- | |||
- | <code java> | ||
- | public class MountainBike { | ||
- | | ||
- | // the Bicycle class has | ||
- | // three fields | ||
- | public int cadence; | ||
- | public int gear; | ||
- | public int speed; | ||
- | // the MountainBike subclass has | ||
- | // one field | ||
- | public int seatHeight; | ||
- | | ||
- | // the MountainBike class has one constructor | ||
- | public MountainBike (int startHeight, | ||
- | seatHeight = startHeight; | ||
- | gear = startGear; | ||
- | cadence = startCadence; | ||
- | speed = startSpeed; | ||
- | } | ||
- | | ||
- | // the Bicycle class has | ||
- | // four methods | ||
- | public void setCadence(int newValue) { | ||
- | cadence = newValue; | ||
- | } | ||
- | | ||
- | public void setGear(int newValue) { | ||
- | gear = newValue; | ||
- | } | ||
- | | ||
- | public void applyBrake(int decrement) { | ||
- | speed -= decrement; | ||
- | } | ||
- | | ||
- | public void speedUp(int increment) { | ||
- | speed += increment; | ||
- | } | ||
- | | ||
- | // the MountainBike subclass has | ||
- | // one method | ||
- | public void setHeight(int newValue) { | ||
- | seatHeight = newValue; | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | Συγκρίνοντας τους δύο παραπάνω ορισμούς της κλάσης '' | ||
- | |||
- | < | ||
- | | ||
- | </ | ||
- | |||
- | Εάν ο παραπάνω συλλογισμός έχει ακόμη μεγαλύτερο βάθος, ο ορισμός και η συντήρηση κλάσεων χωρίς την χρήση της ιδιότητας της κληρονομικότητας γίνεται πολύ πολύπλοκη. | ||
- | |||
- | ==== Ο κατασκευαστής της υποκλάσης ==== | ||
- | |||
- | Επανερχόμενοι στο αρχικό παράδειγμα, | ||
- | |||
- | <code java> | ||
- | // the MountainBike subclass has | ||
- | // one constructor | ||
- | public MountainBike(int startHeight, | ||
- | int startSpeed, int startGear) { | ||
- | super(startCadence, | ||
- | seatHeight = startHeight; | ||
- | } | ||
- | </ | ||
- | |||
- | Μέσω της κλήσης '' | ||
- | - Να κληθεί ο κατασκευαστής της γονικής κλάσης από τον προγραμματιστή, | ||
- | - Να μην κληθεί κάποιος κατασκευαστής από τον προγραμματιστής. Σε αυτή την περίπτωση ο compiler αναζητά τον default κατασκευαστή της γονικής κλάσης, | ||
- | |||
- | <WRAP tip> | ||
- | Αν δεν κληθεί κανένας κατασκευαστής από τον προγραμματιστή και ο compiler δεν βρει τον default κατασκευαστή της γονικής κλάσης τότε θα εμφανίσει ένα μήνυμα λάθους της μορφής. | ||
- | < | ||
- | error: no suitable constructor found for Bicycle (no arguments) | ||
- | </ | ||
- | |||
- | Συνηπώς, | ||
</ | </ | ||
- | Τέλος, μία δήλωση της παρακάτω | + | |Προηγούμενο: [[: |
- | <code java> | + | Εισαγωγή στον |
- | // the MountainBike subclass has | + | |
- | // one constructor | + | |
- | public MountainBike(int startHeight, | + | |
- | int startSpeed, int startGear) { | + | |
- | gear = startGear; | + | |
- | cadence = startCadence; | + | |
- | speed = startSpeed; | + | |
- | seatHeight = startHeight; | + | |
- | } | + | |
- | </ | + | |
- | δηλαδή η αντικατάσταση του κώδικα που περιέχει ο κατασκευαστής της | + | |
- | + | ||
- | */ | + | |
- | + | ||
- | |Προηγούμενο: [[: | + | |
java/class.1453466710.txt.gz · Last modified: 2016/01/22 12:45 (external edit)