Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων



Σχετικά έγγραφα
Προγραµµατισµός ΙΙ Java 2

Κλάσεις και Αντικείµενα

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Η λέξη κλειδί this. Γαβαλάς Δαμιανός

Βασικά της γλώσσας JAVA

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

Αντικειµενοστρεφής Προγραµµατισµός

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

Βασικάχαρακτηριστικάτηςγλώσσας. Πίνακες, Έλεγχος Ροής και Βρόχοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

2.1 Αντικειµενοστρεφής προγραµµατισµός

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

Αντικειµενοστραφής Προγραµµατισµός

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους

Αντικειμενοστρεφής Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Οντοκεντρικός Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Εξαιρέσεις. try, catch, finally, throw, throws

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Κλάσεις και αντικείμενα #include <iostream.h<

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Copy Constructor Deep and Shallow Copies

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

Βασικά στοιχεία της Java

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ. Σχηματική παράσταση του προγράμματος. logariasmos

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

(Διαφάνειες Νίκου Βιδάκη)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και αντικείμενα στην Java Strings Πίνακες

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors, equals, tostring Αντικείμενα ως παράμετροι

2.1. Εντολές Σχόλια Τύποι Δεδομένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

Αντικειμενοστρεφής Προγραμματισμός

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

Βασικά Στοιχεία της Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

Εισαγωγή στον Προγ/μό Η/Υ

Δοµές Δεδοµένων. 3η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες. Ε. Μαρκάκης

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 5: Κατασκευαστές (Constructors)

Mεταβλητές (variables) και Σταθερές (constants)

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Κεφάλαιο 15 Γλώσσα προγραμματισμού Java

Αντικειμενοστρεφής Προγραμματισμός

Ειδικά Θέματα Προγραμματισμού

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

Διδάσκων: Παναγιώτης Ανδρέου

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Αντικειμενοστραφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

Ανάπτυξη και Σχεδίαση Λογισμικού

3 Αλληλεπίδραση Αντικειμένων

Transcript:

Μέθοδοι Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων

Μέθοδοι Οιµέθοδοικαθορίζουντηνσυµπεριφοράενόςαντικειµένου. Τα βασικά µέρη από τα οποία αποτελείται µία µέθοδος είναι τα εξής: Το όνοµα της µεθόδου H λίστα των παραµέτρων Ο τύπος της µεταβλητής που επιστρέφει η µέθοδος (πρωταρχικός ή κλάση του αντικειµένου που κάλεσε τη µέθοδο) Το κυρίως σώµα της µεθόδου (που είναι µέσα σε άγγιστρα) παράδειγµα: return type methodname(type1 arg1, type2 arg2, type3 arg3 ) { κυρίως σώµα της µεθόδου Μίαµέθοδοςδιακρίνεταιαπότιςυπόλοιπεςαπότοόνοµάτηςκαιτη λίστα των παραµέτρων (δύο µέθοδοι µε ίδιο όνοµα και διαφορετική λίστα παραµέτρων είναι διαφορετικές). Ο τύπος επιστροφής µπορεί να είναι αντικείµενα τύπου πίνακα. Οι αγκύλες του πίνακα σε αυτή την περίπτωση µπορεί να µπουν µετά τον τύπο µεταβλητής των στοιχείων του πίνακα (int[ ]) ή µετά τις παρενθέσεις που περιέχουν τα ορίσµατα. Πιό ευανάγνωστη µορφή είναιηπρώτη.

Μέθοδοι (συνέχεια) και η λέξη this Η λίστα παραµέτρων είναι ουσιαστικά τοπικές µεταβλητές για τη µέθοδο και παίρνουν τιµές όταν καλείται η µέθοδος. Στο κυρίως σώµα µπορώ να έχω απλές εντολές, κλήσεις µεθόδων σε άλλα αντικείµενα, βρόχους κ.λπ. Ηµέθοδοςεπιστρέφεικάποιαµεταβλητήότανολοκληρωθείήvoid αν δεν επιστρέφει τίποτα. Η τιµή αυτή επιστρέφεται χρησιµοποιώντας την return. Στο παράδειγµα που ακολουθεί ορίζεται µία κλάση RangeClass η οποία περιέχει την µέθοδο makerange. Η µέθοδος αυτή παίρνει ως ορίσµατα 2 ακεραίους και επιστρέφει έναν πίνακα µε όλους τους ακεραίους ανάµεσα στους 2 ακεραίους-ορίσµατα. Πολλές φορές στο κυρίως σώµα µιας µεθόδου χρειάζεται να ανεφερθώστοτρέχοναντικείµενοµετοοποίοκλήθηκεηµέθοδος. Αυτόµπορείναγίνειχρησιµοποιώνταςτηλέξηκλειδί this. Χρησιµοποιώ την λέξη this στη θέση του ονόµατος του αντικειµένου. π.χ. this.met1 η µεταβλητή αντικειµένου met1 για το τρέχον αντικείµενο, return this επιστρέφει το τρέχον αντικείµενο κ.λπ. Οι µέθοδοι που χρησιµοποιούν το this είναι µέθοδοι αντικειµένου και όχικλάσης. Οιµέθοδοικλάσηςδηλώνονταιµετηλέξηκλειδί static και δεν µπορεί να χρησιµοποιηθεί η λέξη this σε αυτές.

Το αποτέλεσµα είναι: The array: [1 2 3 4 5 6 7 8 9 10 ]

Εµβέλεια µεταβλητών Εµβέλεια µιας µεταβλητής είναι το τµήµα του προγράµµατος στο οποίο η µεταβλητή µπορεί να χρησιµοποιηθεί. Η τοπική µπορεί να χρησιµοποιηθεί µόνο στο block στο οποίο ορίζεται. Οι µεταβλητές υπόστασης και κλάσης έχουν εµβέλεια που εκτείνεται σε όλη την κλάση οπότε και µπορούν να χρησιµοποιηθούν από κάθε µέθοδο της κλάσης. Ότανµίαµεταβλητήείναιµέσασεένανορισµόµεθόδου, η java ελέγχει αν υπάρχει ορισµός αυτής στο τρέχων block. Στη συνέχεια φτάνει µέχρι τον ορισµό της µεθόδου. Αν δεν υπάρχει ούτε εκεί την αναζητάστηντρέχουσακλάσηκαιανδεντηνβρειούτεεκείτην αναζητάστηνυπερκλάσηκ.λπ. Επειδή πολλές φορές µπορεί να δηµιουργηθούν προγραµµατιστικά λάθη κάθε φορά που χρησιµοποιούµε ίδια ονόµατα µεταβλητών σε κλάσεις, υπερκλάσεις και µεθόδους καλό θα ήταν να µην χρησιµοποιούνται ίδια ονόµατα για διαφορετικές µεταβλητές ανεξάρτητα από την εµβέλεια κάθε µιας από αυτές.

public class embeleia { int test=10; void printtest(){ int test=20; System.out.println("test: "+test); System.out.println("this.test: "+this.test); public static void main(string args[ ]){ embeleia st=new embeleia(); st.printtest(); Αποτέλεσµα test: 20 this.test: 10 public class px1 { int test1=10; void printtest(){ int test=20; System.out.println("test: "+test); System.out.println("this.test: "+test1); public static void main(string args[]){ px1 st=new px1(); st.printtest(); System.out.println("st.test1: "+st.test1); Αποτέλεσµα test: 20 this.test: 10 this.test: 10

Πέρασµα µε τιµή και αναφορά Όταν τα αντικείµενα περνούν σαν παράµετροι σε µία µέθοδο κάθε αλλαγή στα αντικείµενα µέσα στη µέθοδο σηµαίνει και αλλαγή στο αρχικό αντικείµενο. Το αντικείµενο περνιέται µε αναφορά ενώ οι πρωταρχικοί τύποι µε τιµή. Οι αρχικές τιµές των πρωταρχικών τύπωνδεναλλάζουνµέσααπότη µέθοδο που τους καλεί.

Μέθοδοι κλάσης Όπως υπάρχουν µεταβλητές κλάσης και αντικειµένου υπάρχουν αντίστοιχα και µέθοδοι κλάσης και αντικειµένου. Οι µέθοδοι κλάσης δεν απαιτούν ένα αντικείµενο της κλάσης για να κληθούν. Όπως συµβαίνει και µε τις µεταβλητές κλάσης πριν από κάθε µέθοδο κλάσης υπάρχει η λέξη κλειδί static. Αναφέρονται στη συνέχεια οι µέθοδοι κάποιων γνωστών κλάσεων της java που µπορούν να χρησιµοποιηθούν σε κάθε πρόγραµµα. Κλάση Math. Περιλαµβάνει ένα σύνολο µαθηµατικών πράξεων που µπορείναχρησιµοποιηθείαπόκάθεπρόγραµµα. Γιαπαράδειγµα: double x = Math.sqrt(x); επιστρέφειτην τετραγωνική ρίζα του x. double z = Math.max(x,y); επιστρέφειτηνµεγαλύτερητιµήαπότα x και y. double z = Math.pow(x,y); επιστρέφει το αποτέλεσµα του x εις την y. Κλάσεις Integer, Float, Boolean. Οι κλάσεις αυτές περιέχουν µεθόδους που µετατρέπουν πρωταρχικούς τύπους σε αντικείµενα και αντικείµενα σε πρωταρχικούς τύπους. Για παράδειγµα η µέθοδος parseint που µετατρέπει το αντικείµενο µέσα στην παρένθεση (πρόκειται για αντικείµενο τύπου String) σε πρωταρχικότύπο (ακέραιο). int x = Integer.parseInt( 87 );

ηµιουργία µεθόδων µε το ίδιο όνοµα και διαφορετικά ορίσµατα (Υπερφόρτωση Μεθόδων) ιαφορά στον τύπο καιτοναριθµότων ορισµάτων

Το αποτέλεσµα είναι: kalese th buildrect me syntetagmenes 25, 25, 50, 50 to orthogwnio mou: <25,25, 50,50> ----------------------------------------------------- kalese th buildrect me shmeia (10,10) kai (20,20) to orthogwnio mou: <10,10, 20,20> ----------------------------------------------------- kalese th buildrect me to shmeio (10,10) kai platos 50, ypsos 50 to orthogwnio mou: <10,10, 60,60> -----------------------------------------------------

Μέθοδος Constructor Κάθε φορά που χρησιµοποιούµε τον τελεστή new για να δηµιουργήσουµε ένα αντικείµενο µιας κλάσης συµβαίνουν τα εξής: εσµεύεται µνήµη για το νέο αντικείµενο Αρχικοποιούνται οι µεταβλητές αυτού του αντικειµένου είτε µε αρχικές τιµές είτε µε default τιµές Καλείται η µέθοδος constructor της κλάσης (πολλές φορές υπάρχουν περισσότερες από µία µέθοδοι constructors) Οι µέθοδοι constructors έχουν τις εξής ιδιότητες: Έχουντοίδιοόνοµαµετηνκλάση εν έχουν επιστρεφόµενο τύπο ενχρησιµοποιούν return Παράδειγµα: public class VolcanoRobot { String status; int speed; int power; VolcanoRobot(String in1, int in2, int in3){ status=in1; speed=in2; power=in3; VolcanoRobot robot1 = new VolcanoRobot ("exploring", 5, 200); robot1.status = exploring robot1.speed=5 robot1.power=200

Κλήση µεθόδου δηµιουργού µέσα από άλλη µέθοδο δηµιουργό. Η java δίνει την δυνατότητα να καλέσετε µία µέθοδο constructor µέσα από µία άλλη µέθοδο constructor που υπάρχει ήδη όταν η µία αντιγράφει µεγάλο τµήµα της συµπεριφοράς της άλλης. είτε το παράδειγµα που ακολουθεί: public class Kyklos { int x,y,radius; Kyklos(int xpoint, int ypoint, int radiuslength){ this.x=xpoint; this.y=ypoint; this.radius=radiuslength; Kyklos(int xpoint, int ypoint){ this(xpoint, ypoint, 1); public static void main(string args[ ]){ Kyklos circle_1= new Kyklos(4,5); System.out.println(circle_1.x+" "+circle_1.y+" "+circle_1.radius); Kyklos circle_2= new Kyklos(2,2,2); System.out.println(circle_2.x+" "+circle_2.y+" "+circle_2.radius); Αποτέλεσµα 4 5 1 2 2 2

Υπερφόρτωση µεθόδων δηµιουργών Όπως έχουµε υπερφορτωµένες µεθόδους µπορούµε να έχουµε και υπερφορτωµένες µεθόδους δηµιουργούς. Με αυτό τον τρόπο µπορώ να ορίσω αντικείµενα ακριβώς όπως θέλω.

Αποτέλεσµα Calling MyRect2 with coordinates 25,25 50,50: MyRect: <25, 25, 50, 50> Calling MyRect2 w/points (10,10), (20,20): MyRect: <10, 10, 20, 20> Calling MyRect2 w/1 point (10,10), width (50) and height (50) MyRect: <10, 10, 60, 60>

Κληρονοµικότητα Γιαναδηλώσωπωςµίακλάσηείναιυποκλάσηµιαςάλλης χρησιµοποιώ τη λέξη κλειδί extends στον ορισµό της. Για παράδειγµα η κλάση ditroxo είναι υποκλάση της κλάσης vehicle. Και η κλάση bicycle είναι υποκλάση της κλάσης ditroxo. Οι ορισµοί κλάσεων και υποκλάσεων διαµορφώνονται ως εξής: public class vehicle {... Γράφω public class ditroxo extends vehicle{ Και public class bicycle extends ditroxo{...

Υπέρβαση µεθόδων (overriding) Κάθε φορά που καλείται η µέθοδος ενός αντικειµένου η java αναζητά τη µέθοδο στην τρέχουσα κλάση και αν δεν την βρεί την αναζητά στην υπερκλάση. Σε κάποιες περιπτώσεις θέλουµε να διαφοροποιηθεί η συµπεριφορά µιας µεθόδου στην τρέχουσα κλάση από αυτή της υπερκλάσης. Σε αυτή την περίπτωση έχουµε υπέρβαση µεθόδου. Παράδειγµα: public class Printer { int x=0; int y=1; void printit(){ System.out.println("x is " + x + ", y is " + y); System.out.println("object ths klashs " + this.getclass().getname()); public class subprinter extends Printer { int z=3; void printit(){ System.out.println("x is " + x + ", y is " + y + ", z is " + z); System.out.println("object ths klashs " + this.getclass().getname()); public static void main(string args[ ]){ subprinter printobj = new subprinter(); printobj.printit(); Αποτέλεσµα x is 0, y is 1, z is 3 object ths klashs subprinter

Κλήση αρχικής µεθόδου από τη νέα µέθοδο (λέξη κλειδί super) Συνήθως δηµιουργούµε νέες µεθόδους που υπερβαίνουν τις αντίστοιχες στις υπερκλάσεις όταν θέλουµε να αυξήσουµε µε πρόσθετη συµπεριφορά τις µεθόδους υπερκλάσεων. Σε αυτές τις περιπτώσεις µπορούµε να χρησιµοποιήσουµε τη λέξη κλειδί super ακολουθούµενη από το όνοµα της µεθόδουπροκειµένουναµηναντιγράφουµετονκώδικατηςαρχικήςµεθόδου. (Ηλέξηκλειδί this αναφέρεται στο τρέχον αντικείµενο και η super στην υπερκλάση) void methodos (int a, int b) {. (κώδικας νέας µεθόδου) super.methodos (a,b);... (κώδικαςνέαςµεθόδου) Τοπροηγούµενοπαράδειγµαθαµπορούσεναγίνειωςεξής: public class Printer { int x=0; int y=1; void printit(){ System.out.println("x is " + x + ", y is " + y); System.out.println("object ths klashs " + this.getclass().getname()); public class subprinter extends Printer { int z=3; void printit(){ System.out.println("z is " + z); super.printit(); public static void main(string args[]){ subprinter printobj = new subprinter(); printobj.printit(); Αποτέλεσµα z is 3 x is 0, y is 1 object ths klashs subprinter

Υπέρβαση ηµιουργών Λογικά δεν µπορεί να γίνει υπέρβαση των µεθόδων δηµιουργών γιατί έχουν το ίδιο όνοµα µε την κλάση. Κάποιες φορές χρειάζεται να αρχικοποιηθούν όχι µόνο οι τιµές των µεταβλητών που έχουν ορισθεί στην κλάση αλλά και µεταβλητές που υπήρχαν ήδη. Για νακαλέσωµιαµέθοδοδηµιουργόσεµίαυπερκλάσηχρησιµοποιώτηλέξηκλειδί super. Αυτό γίνεται στο παράδειγµα που ακολουθεί: import java.awt.point; public class NamedPoint extends Point{ String name; NamedPoint (int x, int y, String pointname){ super(x,y); name=pointname; public static void main(string args[ ]){ NamedPoint np = new NamedPoint(5, 5, "Shmeio"); System.out.println("x is "+np.x+", "+"y is "+np.y+", "+"name is "+np.name); Η κλάση Point έχει µία µέθοδο δηµιουργό που παίρνει 2 ορίσµατα x και y και επιστρέφει ένα αντικείµενο τύπου Point. Η NamedPoint χρησιµοποιεί επιπλέον µία µεταβλητή αντικειµένου και έχει µία µέθοδο δηµιουργό για να αρχικοποιήσει τα x,y και name. Προσοχή!!! Η super() πρέπει να είναι η πρώτη πρόταση στον ορισµό της costructor.