Αντιγράψτε τις ακόλουθες κλάσεις Java σε ένα κενό αρχείο κειμένου . Αυτά είναι η τάξη που θα χρησιμοποιηθεί για το φροντιστήριο :
δημόσια τάξη Πρόσωπο { }
δημόσια τάξη MalePerson επεκτείνει Person { } 2
Επικολλήστε τον ακόλουθο upCast :
Πρόσωπο p = νέα MalePerson ( " Tom ")?
η τάξη MalePerson είναι μια υποκατηγορία του προσώπου , έτσι αυτό είναι ένα χυτό της ιεραρχίας . Upcasting είναι ο ευκολότερος τύπος του cast για να τραβήξει μακριά . Java απλά ξέρει τι να κάνει όταν μια υποκατηγορία έχει ανατεθεί σε έναν από τους προγόνους του . Κάνετε μια διανοητική σημείωση , όμως : Java θα είναι πάντα να θυμόμαστε ό, τι ένα αντικείμενο είναι πραγματικά κατά τη διάρκεια μιας upCast . Ακόμα και τώρα που το MalePerson " Tom" έχει ανατεθεί σε ένα αντικείμενο γενικής πρόσωπο , Java θυμάται ότι αυτό το αντικείμενο είναι πραγματικά μια MalePerson
εικόνων 3
Επικολλήστε τον ακόλουθο χαμηλωμένα : .
Πρόσωπο p = νέα MalePerson ( " Tom ")?
MalePerson m = ( MalePerson ) p?
Downcasts όπως αυτό , που κινούνται κάτω από την ιεραρχία , να απαιτήσει από τον προγραμματιστή για να καθορίσετε τον τύπο κατηγορίας που χρησιμοποιείται για το cast σε παρένθεση. Ωστόσο , Downcasting είναι πιο περίπλοκη από ό, τι upcasting
Η 4
Απόπειρα την ακόλουθη χαμηλωμένα :
Πρόσωπο p = new Person ( "Jane" ) ?
MalePerson m = . ( MalePerson ) p?
Αυτή η προσπάθεια αποτύχει , και δεν πρέπει να είναι δύσκολο να καταλάβει κανείς γιατί . Ενώ είναι λογικό να υποθέσει κανείς ότι ένα MalePerson είναι ένα πρόσωπο , δεν είναι λογικό για τον υπολογιστή για να υποθέσουμε ότι όλα τα πρόσωπα είναι MalePersons . Λίγα μπορεί να είναι FemalePersons , και η διαφορά μπορεί να είναι ή να μην είναι ασήμαντο για τους σκοπούς του υπολογιστή. Ακριβώς για να είναι ασφαλής , το πρόγραμμα εμφανίζει ένα σφάλμα .
Ένα χαμηλωμένα μπορεί να συμβεί μόνο αν η upCast έχει συμβεί πρώτο , το οποίο είναι ο λόγος που η upCast στο Βήμα 3 ήταν έγκυρη , αλλά όχι στο Βήμα 4 . Αυτό μπορεί να ακούγεται upcasting άχρηστο από την πρώτη. Kαι το ερώτημα γιατί η upCast διεξήχθη στην πρώτη θέση , αλλά κρατήστε αυτή τη σκέψη
5
Εξετάστε την ακόλουθη μέθοδο : .
Δημόσια άκυρη χαιρετισμού ( p Person) {
αν ( p instanceof MalePerson ) {
MalePerson m = ( MalePerson ) p?
m.doMaleThings ( ) ?
} else if ( p instanceof FemalePerson ) {
FemalePerson f = ( MalePerson ) p?
f.doFemaleThings ( ) ?
} else ρίξει νέο GenderConfusionException ( ) ?
}
Ο συγγραφέας αυτής της μεθόδου δεν έχει καμία δυνατότητα να γνωρίζει εκ των προτέρων αν η μέθοδος αυτή θα κληθεί με MalePerson ή ένα αντικείμενο FemalePerson , έτσι χρησιμοποιεί το αντικείμενο γενικής πρόσωπο . Στη συνέχεια , χρησιμοποιεί το instanceof εντολή να δημοσκόπηση το πρόσωπο δίνεται και να δούμε αν θα πρέπει να το downcast ως ένα αρσενικό ή ένα θηλυκό πρόσωπο .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα