konanast Δημοσ. 17 Απριλίου 2008 Δημοσ. 17 Απριλίου 2008 Έχω δημιουργήσει δύο αντικείμενα Truck tr1 = new Truck("Mercedes","Panos","Athens"); Truck tr2 = new Truck("AlfaRomeo","Kostas","Patra"); Μπορεί να μου εξηγήσei κάποιος πως μπορώ να κάνω Override την μέθοδο equals? Κυρίως θέλω να μου εξηγήσει λίγο το όρισμα που παίρνει! public boolean equals(Object obj) ... thanks...
edhunter Δημοσ. 17 Απριλίου 2008 Δημοσ. 17 Απριλίου 2008 για το override μπορεις να γραψεις απλα μια νεα μεθοδο equals μεσα στην κλαση σου η οποια θα εχει το ιδιο return type και θα δεχεται τα ιδια arguments με την equals στην κλαση object. δε ξερω τι εννοεις εκει που λες ορισμα γιατι εγω τα εχω μαθει ολα στα αγγλικα..
alex2005 Δημοσ. 17 Απριλίου 2008 Δημοσ. 17 Απριλίου 2008 Δεν είναι κάτι το περίεργο το όρισμά σου.Είναι ένα Object που αν δεν ξέρεις είναι η τάξη στην κορυφή της πυραμίδας όλων των τάξεων της Java.Οπότε όλα τα αντικείμενα είναι Object και κατά συνέπεια μπορείς ως parameter να βάλεις το οτιδήποτε. Αυτή ήταν η ερώτησή σου?
Γηρυόνης Δημοσ. 17 Απριλίου 2008 Δημοσ. 17 Απριλίου 2008 Έχω δημιουργήσει δύο αντικείμεναTruck tr1 = new Truck("Mercedes","Panos","Athens"); Truck tr2 = new Truck("AlfaRomeo","Kostas","Patra"); Μπορεί να μου εξηγήσei κάποιος πως μπορώ να κάνω Override την μέθοδο equals? Κυρίως θέλω να μου εξηγήσει λίγο το όρισμα που παίρνει! public boolean equals(Object obj) ... thanks... Θα πρέπει να κάνεις κάτι σαν και το παρακάτω > public class Truck { ... ... public boolean equals(Object o) { if (!(o instanceof Truck)) return false; Truck truck = (Truck) o; return name.equals(o.getName()) && city.equals(name.getCity()) ... } } Επίσης θα πρέπει να κάνεις override και την hashcode κάτι απλό σαν > public int hashCode() { return 0; }
konanast Δημοσ. 17 Απριλίου 2008 Μέλος Δημοσ. 17 Απριλίου 2008 Θα πρέπει να κάνεις κάτι σαν και το παρακάτω > public class Truck { ... ... public boolean equals(Object o) { if (!(o instanceof Truck)) return false; Truck truck = (Truck) o; return name.equals(o.getName()) && city.equals(name.getCity()) ... } } Επίσης θα πρέπει να κάνεις override και την hashcode κάτι απλό σαν > public int hashCode() { return 0; } Thanks Φίλε! Αν έχεις χρόνο μπορείς να μου εξηγήσεις λίγο τί κάνει η instance of?
Γηρυόνης Δημοσ. 18 Απριλίου 2008 Δημοσ. 18 Απριλίου 2008 Η instanceof σου λέει αν κάτι είναι αντικείμενο συγκεκριμένου τύπου. Ανεβαίνει όλη την ιεραρχία και ψάχνει μέχρι να το βρει. Στο παράδειγμα το χρησιμοποίησα για να δω αν πας να συγκρίνεις δύο ίδαι αντικείμενα. Αν πχ. έχεις > String s = "hey"; και κάνεις > truck.equals(s) τότε το instanceof θα επιστρέψει false αφού το s δεν είναι ίδιου τύπου με το truck. Το ένα είναι String και το άλλο είναι Truck.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.