Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα και καλη χρονιά σε όλους.

 

Μπορει κάποιος να μου εξηγήσει ποια ειναι η ροή στον παρακάτω κώδικα?

 

> 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 μιας και ειμαι καινουργιος.

Ευχαριστω εκ των προτερων

Δημοσ.

Ειμαι σε μηχάνημα που δεν μπορώ να δώ τι τρέχει το πρόγραμμα, αλλα φαντάσου ότι αρχικά έχεις μια φόρμα που γεννά και διαχειρίζεται νέες φόρμες, απλά η main είναι η γνωστή διαχειρίστρια για να τρέξει το πρόγραμμα.

Δημοσ.

Τρέχει η main, δημιουργεί ένα d1 τύπου demochild και μετά καλείται η display του d1.

Διάβασε λίγο βασικές αρχές object oriented προγραμματισμού να μπεις στο κλίμα.

Δημοσ.

Καλησπέρα παιδια ευχαριστω για τις απαντησεις !

 

Η εξοδος του προγραμματος ειναι αυτη :

 

> 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?

Δημοσ.

Oλα εντάξει παιδια! Το καταλαβα. Κατι τελευταιο μονο... η super κάνει ας πουμε

το λεγομενο override στην value1 του 1ου constructor ο οποιος δεν καλείται απο την super?

Δημοσ.

Η super μπαίνει στην αρχή του constructor ακομα και αν δεν την βάλεις εσύ . Δοκίμασε να βάλεις σε σχολια στην parent class τον examples() constructor να δεις τι θα γίνει. Και η this και η super κατευθύνουν συγκεκριμένα την κλήση των constructors. Διαφορετικά ο compiler βάζει πάντα ως πρώτη εντολή στον constructor την super() .

 

Αυτό γιατί η αρχικοποίηση γίνεται από την parent class προς τα παιδιά

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...