Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Java

Πώς να typecast σε Java 6

Σε προγραμματισμός ηλεκτρονικών υπολογιστών , typecasting αναφέρεται σε λήψη ενός αντικειμένου από έναν τύπο και να το μετατρέψει σε ένα αντικείμενο άλλου τύπου . Στην Java 6 , αυτό συνήθως , αλλά όχι πάντα , περιλαμβάνει είτε upcasting ή Downcasting , πράγμα που σημαίνει να ρίχνει ένα αντικείμενο πάνω ή προς τα κάτω στην ιεραρχία κληρονομικότητας . Οδηγίες
Η 1

Αντιγράψτε τις ακόλουθες κλάσεις 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 ως ένα αρσενικό ή ένα θηλυκό πρόσωπο .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα