Both sides previous revisionPrevious revisionNext revision | Previous revision |
java:class_fields [2020/02/08 05:58] – [Τύποι πεδίων της κλάσης] gthanos | java:class_fields [2022/02/23 10:11] (current) – gthanos |
---|
===== Τύποι πεδίων της κλάσης ===== | ===== Τύποι πεδίων της κλάσης ===== |
| |
Μία κλάση μπορεί να διαθέτει | Μία κλάση μπορεί να διαθέτει τους εξής τύπους πεδίων |
- **[[java:variables|primitive]] (βασικούς) τύπους δεδομένων:** (πχ. int, long, char, double, float κλπ, σε αναλογία με τους τύπους δεδομένων της γλώσσας προγραμματισμού C) και | - **[[java:variables|primitive]] (βασικούς) τύπους δεδομένων:** (πχ. int, long, char, double, float κλπ, σε αναλογία με τους τύπους δεδομένων της γλώσσας προγραμματισμού C) και |
- **[[java:variables|reference]] τύπους δεδομένων**: σύνθετους τύπους δεδομένων οι οποίοι περιγράφονται από κλάσεις. | - **[[java:variables|reference]] (αναφορικούς) τύπους δεδομένων**: σύνθετους τύπους δεδομένων οι οποίοι περιγράφονται από κλάσεις. |
| |
Βασικούς τύπους δεδομένων συναντήσαμε στην [[java:class|κλάση Rectangle της προηγούμενης σελίδας]]. **Reference** τύποι δεδομένων είναι οι μη βασικοί τύποι δεδομένων που προδιαγράφονται από κλάσεις. Για παράδειγμα, ας πούμε ότι στο παραπάνω παράδειγμα θέλουμε να προσθέσουμε την θέση του ορθογώνιου παραλληλόγραμμου που ορίσαμε στην προηγούμενη παράγραφο στον χώρο. Η θέση του παραλληλογράμμου μπορεί να προσδιοριστεί από την παρακάτω κλάση **Point** η οποία περιγράφει ένα σημείο στο χώρο. Θεωρήστε ότι το σημείο προσδιορίζει την κάτω αριστερή γωνία του παραλληλογράμμου στον χώρο, όπως φαίνεται στο παρακάτω σχήμα. | === Βασικοί Τύποι === |
| |
| Βασικοί τύποι δεδομένων είναι οι ακεραιες μεταβλητές που συναντήσαμε στην [[java:class|κλάση Rectangle της προηγούμενης σελίδας]]. Οι βασικοί τύποι δεδομένων περιγράφονται περιληπτικά στον παρακάτω πίνακα: |
| |
| ^ τύπος δεδομένων ^ byte ^ short ^ int ^ long ^ float ^ double ^ boolean ^ char ^ |
| | αριθμός bits | 8 | 16 | 32 | 64 | 32-bit IEEE 754 floating point | 64-bit IEEE 754 floating point | not-applicable<color red>*</color> | 16 | |
| | αριθμός bytes | 1 | 2 | 4 | 8 | 4 | 8 | not-applicable<color red>*</color> | 2 | |
| | εύρος τιμών | -128 έως 127 | -32.768 έως 32.767 | -2<sup>31</sup> έως 2<sup>31</sup>-1 | -2<sup>63</sup> έως 2<sup>63</sup> | | | μόνο δύο τιμές //true// και //false// | 16bit Unicode characters | |
| |
| <color red>*</color> Ο τύπος **boolean** λαμβάνει μόνο δύο τιμές. Ο αριθμός των bytes που καταλαμβάνονται δεν ορίζεται και πιθανόν διαφέρει από υλοποίηση σε υλοποίηση JVM. |
| |
| === Αναφορικοί Τύποι === |
| |
| Αναφορικοί (reference) τύποι δεδομένων είναι οι μη βασικοί τύποι δεδομένων που περιγράφονται από κλάσεις. Για παράδειγμα, ας υποθέσουμε ότι θέλουμε να προσθέσουμε τη θέση του ορθογώνιου παραλληλόγραμμου που ορίσαμε στην προηγούμενη παράγραφο στο δισδιάστατο χώρο. Η θέση του παραλληλογράμμου μπορεί να προσδιοριστεί από την παρακάτω κλάση **Point** η οποία περιγράφει ένα σημείο στο χώρο μέσω των συντεταγμένων του στους δύο άξονες. Θεωρούμε ότι το σημείο προσδιορίζει τη γωνία του παραλληλογράμμου με τις μικρότερες τιμές στον όριζόντιο και κάθετο άξονα (δηλ την κάτω αριστερή γωνία), όπως φαίνεται στο παρακάτω σχήμα. |
| |
{{ :java:rectangle-origin.png?350 | }} | {{ :java:rectangle-origin.png?350 | }} |
</code> | </code> |
| |
Με χρήση της παραπάνω κλάσης η κλάση ''Rectangle'' γίνεται. | Με χρήση της παραπάνω κλάσης η κλάση ''Rectangle'' μετασχηματίζεται ως εξής. |
| |
<code java Rectangle.java> | <code java Rectangle.java> |
} | } |
| |
void setOrigin(int newX, int newY) { | int area() { |
origin.setX(newX); | return width * height; |
origin.setY(newY); | |
} | } |
} | } |
| |
Η κλάση ''Rectangle'' επομένως περιέχει εκτός από **primitive** πεδία και ένα **reference** πεδίο, το πεδίο ''origin''. | Η κλάση ''Rectangle'' επομένως περιέχει εκτός από **primitive** πεδία και ένα **reference** πεδίο, το πεδίο ''origin''. |
| |
<WRAP todo 80% center round> | |
Μεταγλωττίστε τις δύο παραπάνω κλάσεις στο τερματικό σας, γράφοντας | |
<code> | |
javac Point.java | |
javac Rectangle.java | |
</code> | |
</WRAP> | |
| |
|Προηγούμενο: [[:java:class| H κλάση ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:class_methods | Μέθοδοι της Κλάσης ]]| | |Προηγούμενο: [[:java:class| H κλάση ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:class_methods | Μέθοδοι της Κλάσης ]]| |