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

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

Δημοσ.

Καλημερα σε ολους τους φιλους και καλη χρονια,εχω μια απλη ερωτησουλα οσον αφορα τους constructors στην Java,λοιπον εχουμε τον παρακατω κωδικα ο οποιος τρεχει μια χαρα

public class Test 
{
    private int x;
    private int y;
    
    
    public Test()
    {
        this(22,44);
    } 
    
    public Test(int x)
    {
        this(x,88);
    }
    
    public Test(int x,int y)
    {
        this.x = x;
        this.y = y;
    }

Η ερωτηση μου ειναι γιατι δεν μπορω στον 3ο constructor να κανω το παρακατω

 public Test(int x,int y)
    {
        this(x,y);
    }

Μου βγαζει το εξης μηνυμα --> recursive constructor invocation

Στην ουσια το ιδιο δεν κανω?

Δημοσ.

Σας ευχαριστω παιδια για τις απαντησεις.

Λοιπον για να το ξεκαθαρισω λγο στο μυαλο μου μια και καλη

 

Σ αυτην την περιπτωση

 public Test(int x,int y)
    {
        this.x = x;
        this.y = y;
    }

απλα ας πουμε δινω τιμες στις μεταβλητες?

 

Και σ αυτην την περιπτωση

 public Test(int x,int y)
    {
        this(x,y);
    }

καλω αλλον κατασκευαστη(τον εαυτο του οπως ειπατε?)

 

Καταλαβα καλα η το εχω χασει?

 

 

 

Απο την άλλη δεν κάνεις καθόλου field assignment.

 

αυτο σημαινει αρχικοποιηση?

 

 

 

Όχι δεν κανείς το ίδιο. Το this() καλεί constructor. 

 

Οποτε αν καταλαβα ορθα αυτο που κανω στους 2 πρωτους constructors ειναι να καλω τον τριτο και να του δινω τιμες?

Δημοσ.

Ναι σε όλα. Η δουλειά του 3ου constructor είναι να κάνει την αρχικοποίηση (την οποία έτσι όπως τον είχες διαμορφώσει δεν την έκανε πλέον). Οι άλλοι 2 ναι καλούν τον 3ο constructor. Το this() πάντα καλεί έναν constructor της κλάσης στην οποία βρίσκεσαι. Αντίστοιχα υπάρχει το super() το οποίο καλεί τον Constructor του Πατέρα (το Οbject στη δική σου περίπτωση). Επιπλέον όλοι οι constructors implicitly καλούν την super() ως πρώτο statement (εκτός αν το συγκεκριμενοποιήσεις εσύ) 

  • Like 2

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

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

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

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

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

Σύνδεση

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

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