Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

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

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

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance)

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

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

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

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

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

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

Σύνθεση και Κληρονομικότητα

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

Σύνθεση και Κληρονομικότητα

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

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

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

Ανάλυση άσκησης. Employee. SalariedEmployee CommissionEmployee HourlyEmployee. BasePlusCommissionEmployee

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

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

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

Προγράμματα με δομή Κληρονομικότητας

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

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

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

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

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

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

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

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

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Αντικειμενοστρέφεια. Ορισμοί αντικειμενοστρέφειας. Κάποιες γενικές παρατηρήσεις: Περιεχόμενα. Ποιοι είναι οι ορισμοί των παρακάτω;

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, 1908

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

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

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

Κάποιες γενικές παρατηρήσεις:

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


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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

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

Από τη UML στον Κώδικα. Μέρος Β

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

Προγράμματα με δομή Κληρονομικότητας

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

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο6

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

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

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

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Καλές επιτυχίες παιδιά στα υπόλοιπα μαθήματά σας και καλές γιορτές!!!!

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα Downcasting Πολυμορφισμός Late Binding

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Βάση Δεδομένων. User Interface - 1 User Interface - 2

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

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

ΑΣΚΗΣΕΙΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (inheritance)

Transcript:

κληρονοµικότητα Παύλος Εφραιµίδης 1

ιεραρχίες κλάσεων Στην (και γενικότερα στον αντικειµενοστρεφή προγραµµατισµό) µπορεί από µία κλάση να δηµιουργηθεί µια νέα κλάση απόγονος που κληρονοµεί όλα τα χαρακτηριστικά της αρχικής κλάσης Ο µηχανισµός αυτός ονοµάζεται κληρονοµικότητα (inheritance) Στην όλες οι κλάσεις κατάγονται (άµεσα ή έµµεσα) από µία κοινή κλάση πρόγονο: Την κλάση Object 2

η βασική ιεραρχία κλάσεων της 3

κληρονοµικότητα Η κλάση Objectκαθορίζει και υλοποιεί συµπεριφορά που υποστηρίζει κάθε κλάση της Είναι η πιο γενική κλάση Η κλάση Object, που είναι η πρώτη κλάση την ιεραρχία,και άλλες κλάσεις που βρίσκονται ψηλά στην ιεραρχία ορίζουν κατά κανόνα γενική συµπεριφορά (general behavior) για τις κλάσεις Κλάσεις που βρίσκονται πιο χαµηλά στην ιεραρχία καθορίζουν πιο εξειδικευµένη συµπεριφορά 4

οι όροι subclass και superclass subclass: Μια κλάση απόγονος (subclass)είναι µια κλάση που επεκτείνει µια άλλη κλάση. Κάθε subclass κληρονοµεί όλα τα χαρακτηριστικά των προγόνων (κλάσεων) της superclass:αναφέρεται σε άµεσο πρόγονο αλλά και γενικότερα σε όλους τους προγόνους µιας κλάσης Για παράδειγµα, όλες οι κλάσεις της έχουν ως πρόγονο (πιθανόν µακρινό πρόγονο) την κλάση Object 5

συµβατότητα τύπων Κάθε αντικείµενο µιας υποκλάσης είναι (συµβατό) αντικείµενο µε τις κλάσεις προγόνους του ηλαδή κάθε αντικείµενο οποιασδήποτε κλάσης της είναι και αντικείµενο Object Το αντίστροφο δεν ισχύει 6

τι κληρονοµείται Μια υποκλάση κληρονοµεί από τις κλάσεις προγόνους: Όλα τα µέληπου είναι public protected package εάν είναι η υποκλάση στο ίδιο package 7

τι δεν κληρονοµείται Οι constructors δεν κληρονοµούνται Μπορούµε όµως να τους καλέσουµε ρητά µε την εντολή super() Μέλη για τα οποία η υποκλάση ορίζει νέα µέλη µε το ίδιο όνοµα, κληρονοµούνται όµως δεν φαίνονται άµεσα στην υποκλάση 8

σύνταξη Ο ορισµός µιας κλάσης απογόνου γίνεται όµοια µε τον ορισµό µιας απλής κλάσης µε την προσθήκη της λέξης κλειδί: extends και το όνοµα της superclass Παράδειγµα: class Super { Number anumber; } class Subbie extends Super { Float anumber; } 9

η κλάση απόγονος (subclass) Στις κλάσεις class Super { Number anumber; } class Subbie extends Super { Float anumber; } 10 η Subbieορίζοντας το µέλος anumber κρύβει (hides) το µέλος anumber της κλάσης προγόνου Η απόγονος κλάση µπορεί να προσπελάσει την anumberως εξής: super.anumber;

υπερκάλυψη (override) µεθόδων Μια κλάση µπορεί να υπερκαλύψει µεθόδους που κληρονόµησε από τις κλάσεις προγόνους της. Μπορεί δηλαδή να ξαναορίσειόποιες θέλει (από αυτές που έχει κληρονοµήσει) Με τον τρόπο αυτό: Η κλάση απόγονος είναι αρκετά όµοια µε τις κλάσεις προγόνους, ενώ ταυτόχρονα διαφοροποιεί τη συµπεριφορά της όπου αυτό είναι απαραίτητο 11

παράδειγµα υπερκάλυψης Όλες οι κλάσεις κληρονοµούν µια µέθοδο tostringαπό την κλάση Object, που είναι πρόγονος όλων των (άλλων) κλάσεων Η βασική υλοποίηση της µεθόδου tostringεπιστρέφει απλά το όνοµα της κλάσης και τον κωδικό hash του αντικειµένου Οι κλάσεις µπορούν να υπερκαλύψουν τη βασική µέθοδο tostring ορίζοντας µια δική τους υλοποίηση Παράδειγµα: Η κλάση Stack µπορεί να έχει µια µέθοδο tostring που επιστρέφει σε String τη λίστα των περιεχοµένων της Stack 12

υπερκάλυψη της tostring() 13 public class Stack {... private Vector items; // Υπερκάλυψη της µεθόδου tostring public String tostring() { int n = items.size(); StringBuffer result = new StringBuffer(); result.append("["); for (int i = 0; i < n; i++) { result.append( items.elementat(i).tostring()); if (i < n-1) result.append(","); } result.append("]"); return result.tostring(); } }

super.method() Η κλήση µιας µεθόδου της κλάσης προγόνου που έχει υπερκαλυφθεί µπορεί να γίνει µε τη λέξη κλειδί super: Παράδειγµα: super.tostring(); 14

η µέθοδος «final» Η κλήση µιας µεθόδου της κλάσης προγόνου που έχει υπερκαλυφθεί µπορεί να γίνει µε τη λέξη κλειδί super: Παράδειγµα: super.tostring(); final µέθοδος Εάν µια µέθοδος δηλωθεί ως finalδεν µπορεί να υπερκαλυφθεί!! final mymethod() { } 15

κληρονοµιά από την κλάση Object Μέθοδοι που κληρονοµούνται από την κλάση Object Επιτρέπεται να υπερκαλυφθούν (Override) clone equals/hashcode finalize tostring εν επιτρέπεται να υπερκαλυφθούν (είναι final): getclass notify notifyall wait 16

Πηγές/Αναφορές The Tutorial, www.sun.com 17