Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako obsadiť v jazyku Java 6

V programovania počítača , obsadiť sa vzťahuje k užívaniu objekt jedného typu a premenou na objekt iného typu . V Jave 6 , to zvyčajne , ale nie vždy , sa buď upcasting alebo downcasting , čo znamená , že pretypovať objekt nahor alebo nadol hierarchiu dedičnosti . Návod dovolená 1

Vložte nasledujúce triedy Java do prázdneho textového súboru . Jedná sa o triedu , ktorá bude použitá pre tutorial :

public class Osoba { }

public class MalePerson rozširuje Osoba { }
2

vložte nasledujúci Povýšenie :

osoba p = new MalePerson ( " Tom " ) ;

trieda MalePerson je podtriedou osoba , takže to je obsadenie do hierarchie . Upcasting je najjednoduchší typ obsadenie zložiť . Java jednoducho vie , čo robiť , keď je podtrieda zaradí do jednej z jej predkov . Skúste si zapamätať , však : Java bude vždy pamätať , čo objekt je skutočne počas Povýšenie . Dokonca aj teraz , že MalePerson " Tom " bola priradená k druhovej osoba objektu , Java si pamätá , že tento objekt je naozaj MalePerson
3

vložte nasledujúci sklopenými : .
< P > Osoba p = new MalePerson ( " Tom " ) ;

MalePerson m = ( MalePerson ) p ;

Downcasts takto, že sa pohybujete smerom nadol hierarchiou , vyžadujú , aby programátor určiť typ triedy sa používa pre obsadenie v zátvorkách . Avšak , downcasting je zložitejšie ako upcasting
4

Pokus nasledujúce sklopenými :

Osoba p = new Person ( " Jane " ) ;

MalePerson m = . ( MalePerson ) p ;

Tento pokus zlyhá , a to by nemalo byť ťažké pochopiť , prečo . Aj keď je rozumné predpokladať , že MalePerson je osoba , to nie je rozumné pre počítač predpokladať , že všetky osoby sú MalePersons . Málo môže byť FemalePersons , a rozdiel môže alebo nemusí byť triviálne na účely tohto počítača . Len pre istotu , program vyvolá chybu .

Odklopené môže dôjsť len vtedy , ak Povýšenie došlo k prvej , čo je dôvod , prečo Povýšenie v kroku 3 bola platná , ale nie v kroku 4. To môže znieť upcasting k ničomu na prvom mieste . To vyvoláva otázku , prečo bol Povýšenie vykonaná na prvom mieste , ale myslí , že myšlienku
5

Zvážte nasledujúce metódy : .

Public void Greet ( osoba p ) {

if ( p instanceof MalePerson ) {

MalePerson m = ( MalePerson ) p ;

m.doMaleThings ( ) ;

} else if ( p instanceof FemalePerson ) {

FemalePerson f = MalePerson ) p ( ;

f.doFemaleThings ( ) ;

} else throw new GenderConfusionException ( ) ;

}

autor tejto metódy nemá žiadny spôsob , ako vedieť vopred, či táto metóda bude volaná s MalePerson alebo objekt FemalePerson , a tak sa používa všeobecný Osoba objekt . Potom sa používa instanceof príkaz na hlasovanie osobe , dané a zistiť , či by sa mal ju skleslý ako mužské alebo ženské osobe .

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené