Star_Light Δημοσ. 18 Ιανουαρίου 2012 Δημοσ. 18 Ιανουαρίου 2012 Καλησπέρα και καλη χρονιά σε όλους. Μπορει κάποιος να μου εξηγήσει ποια ειναι η ροή στον παρακάτω κώδικα? > class examples{ int value1; int value2; examples(){ value1 = 1; value2 = 2; System.out.println("Inside 1st Parent Constructor"); } examples(int a){ value1 = a; System.out.println("Inside 2nd Parent Constructor"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); } public static void main(String args[]){ DemoChild d1 = new DemoChild(); d1.display(); } } class DemoChild extends examples{ int value3; int value4; DemoChild(){ //super(5); value3 = 3; value4 = 4; System.out.println("Inside the Constructor of Child"); } public void display(){ System.out.println("Value1 === "+value1); System.out.println("Value2 === "+value2); System.out.println("Value1 === "+value3); System.out.println("Value2 === "+value4); } } Στην C ηξερα πχ οτι ξεκινουσαμε με την main και μεσα απο αυτην γινοταν η κληση της συναρτησης σε γραμμη οπου έκανες εσυ ο ιδιος την κλήση ο έλεγχος περνουσε μεσα στον ορισμο της συνάρτησης γινοταν εκει μεσα οτι ηταν να γινει επέστρεφε μια τιμη ή δεν επεστρεφε τιποτα και ο ελεγχος περνουσε μετα στην main οπου και τερματιζε το προγραμμα ας πουμε για ενα πολυ απλο σεναριο κωδικα σε C . Κάποια παρομοια εξήγηση με την παραπάνω θα με ενδιέφερε και εδω στην Java μιας και ειμαι καινουργιος. Ευχαριστω εκ των προτερων
erimitis Δημοσ. 19 Ιανουαρίου 2012 Δημοσ. 19 Ιανουαρίου 2012 Ειμαι σε μηχάνημα που δεν μπορώ να δώ τι τρέχει το πρόγραμμα, αλλα φαντάσου ότι αρχικά έχεις μια φόρμα που γεννά και διαχειρίζεται νέες φόρμες, απλά η main είναι η γνωστή διαχειρίστρια για να τρέξει το πρόγραμμα.
djcat Δημοσ. 19 Ιανουαρίου 2012 Δημοσ. 19 Ιανουαρίου 2012 Τρέχει η main, δημιουργεί ένα d1 τύπου demochild και μετά καλείται η display του d1. Διάβασε λίγο βασικές αρχές object oriented προγραμματισμού να μπεις στο κλίμα.
Star_Light Δημοσ. 19 Ιανουαρίου 2012 Μέλος Δημοσ. 19 Ιανουαρίου 2012 Καλησπέρα παιδια ευχαριστω για τις απαντησεις ! Η εξοδος του προγραμματος ειναι αυτη : > Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4 Ειπαμε λοιπον πως καλειται πρωτα η display του d1 αρα μπαινει μεσα στην DemoChild η οποια κληρονομεί απο την examples και αρα παιρνει και ολα της τα χαρακτηριστικα... για αυτο εχουν τιμες οι μεταβλητες Value1 & Value2 ε? να ρωτησω ομως γιατι παιρνει μονο τον 1ο constructor ας πουμε και οχι και τους αλλους 2?
Star_Light Δημοσ. 19 Ιανουαρίου 2012 Μέλος Δημοσ. 19 Ιανουαρίου 2012 Oλα εντάξει παιδια! Το καταλαβα. Κατι τελευταιο μονο... η super κάνει ας πουμε το λεγομενο override στην value1 του 1ου constructor ο οποιος δεν καλείται απο την super?
Aztec Δημοσ. 19 Ιανουαρίου 2012 Δημοσ. 19 Ιανουαρίου 2012 Η super μπαίνει στην αρχή του constructor ακομα και αν δεν την βάλεις εσύ . Δοκίμασε να βάλεις σε σχολια στην parent class τον examples() constructor να δεις τι θα γίνει. Και η this και η super κατευθύνουν συγκεκριμένα την κλήση των constructors. Διαφορετικά ο compiler βάζει πάντα ως πρώτη εντολή στον constructor την super() . Αυτό γιατί η αρχικοποίηση γίνεται από την parent class προς τα παιδιά
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα