bazinga13 Δημοσ. 17 Ιανουαρίου 2016 Δημοσ. 17 Ιανουαρίου 2016 Καλημερα σε ολους τους φιλους και καλη χρονια,εχω μια απλη ερωτησουλα οσον αφορα τους 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 Στην ουσια το ιδιο δεν κανω?
παπι Δημοσ. 17 Ιανουαρίου 2016 Δημοσ. 17 Ιανουαρίου 2016 Όχι δεν κανείς το ίδιο. Το this() καλεί constructor.
ZAKKWYLDE Δημοσ. 17 Ιανουαρίου 2016 Δημοσ. 17 Ιανουαρίου 2016 Και μάλιστα καλείς τον ίδιο constructor, γι'αυτό και το recursion. Απο την άλλη δεν κάνεις καθόλου field assignment.
bazinga13 Δημοσ. 17 Ιανουαρίου 2016 Μέλος Δημοσ. 17 Ιανουαρίου 2016 Σας ευχαριστω παιδια για τις απαντησεις. Λοιπον για να το ξεκαθαρισω λγο στο μυαλο μου μια και καλη Σ αυτην την περιπτωση 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 ειναι να καλω τον τριτο και να του δινω τιμες?
ZAKKWYLDE Δημοσ. 17 Ιανουαρίου 2016 Δημοσ. 17 Ιανουαρίου 2016 Ναι σε όλα. Η δουλειά του 3ου constructor είναι να κάνει την αρχικοποίηση (την οποία έτσι όπως τον είχες διαμορφώσει δεν την έκανε πλέον). Οι άλλοι 2 ναι καλούν τον 3ο constructor. Το this() πάντα καλεί έναν constructor της κλάσης στην οποία βρίσκεσαι. Αντίστοιχα υπάρχει το super() το οποίο καλεί τον Constructor του Πατέρα (το Οbject στη δική σου περίπτωση). Επιπλέον όλοι οι constructors implicitly καλούν την super() ως πρώτο statement (εκτός αν το συγκεκριμενοποιήσεις εσύ) 2
bazinga13 Δημοσ. 18 Ιανουαρίου 2016 Μέλος Δημοσ. 18 Ιανουαρίου 2016 να εισαι καλα φιλε μου,τωρα ξεκαθαριζει το τοπιο,ευχαριστω
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα