Παναγιώτη θα προσπαθήσω να το εξηγήσω όσο καλύτερα μπορώ γιατί υπάρχει σύγχιση...
Κάθε φορά που ορίζουμε μια νέα κλάση, εκτός από αντικείμενα αυτής της κλάσης έχουμε αυτόματα και τη δυνατότητα να ορίζουμε πίνακες της συγκεκριμένης κλάσης. Στο παράδειγμα των σημειώσεων έχουμε ορίσει μια κλάση Point που έχει 2 μεταβλητές μέλη τύπου int χ και y.
Η δήλωση λοιπόν points = new Point[4]; δημιουργεί έναν πίνακα τύπου Point μεγέθους 4 στοιχείων και θέτει τη μεταβλητή μέλος points να δείχνει σε αυτόν τον πίνακα. Ο πίνακας αυτός δεν είναι δισδιάστατος αλλά μονοδιάστατος, αποτελείται από 4 στοιχεία. Απλά, αυτό που θα πρέπει να προσέξεις είναι πως το κάθε στοιχείο του πίνακα δύναται να αποθηκεύσει ένα αντικείμενο τύπου Point, το οποίο με τη σειρά του περιέχει 2 πεδία, το x και το y.
Στη σελίδα 123 τώρα, υποθέτω πως αναφέρεσαι στη γραμμή:
Point[] p = {new Point(2, 2), ... }
Αυτό που γίνεται εδώ είναι δημιουργία και αρχικοποίηση ενός πίνακα τύπου Point 4 στοιχείων σε μία γραμμή, η οποία δουλεύει ακριβώς με τον ίδιο τρόπο που λειτουργεί για τους βασικούς τύπους. Αν ήθελες να αρχικοποιήσεις σε μία γραμμη έναν πίνακα ακεραίων 4 στοιχείων θα έγραφες:
int[] array = {1, 3, 5, 7};
Η μόνη διαφορά είναι πως στην περίπτωση του Point δεν έχεις βασικούς τύπους αλλά αντικείμενα και άρα θα πρέπει να τα δημιουργήσεις on-the-fly με τη σύνταξη new Point(2, 2) κ.ο.κ.
Αυτό που θα πρέπει να προσέξεις είναι πως έχεις έναν μονοδιάστατο πίνακα 4 στοιχείων, το κάθε στοιχείο του οποίου αποθηκεύει αντικείμενα τύπου Point.
ΝΠ