Académique Documents
Professionnel Documents
Culture Documents
:HZHUHXQGHUSDLG
%HWWHU/LYLQJLQ RYHUZRUNHGFRGHUV¶WLOOZH
WULHGWKH3RO\PRUSKLVP3ODQ%XW
2EMHFWYLOOH WKDQNVWRWKH3ODQRXUIXWXUHLV
EULJKW<RXUVFDQEHWRR
3ODQ\RXUSURJUDPVZLWKWKHIXWXUHLQPLQG)F THERE WERE A WAY TO WRITE
*AVA CODE SUCH THAT YOU COULD TAKE MORE VACATIONS HOW MUCH WOULD IT BE WORTH TO YOU 7HAT
IF YOU COULD WRITE CODE THAT SOMEONE ELSE COULD EXTEND EASILY !ND IF YOU COULD WRITE CODE
THAT WAS FLEXIBLE FOR THOSE PESKY LAST
MINUTE SPEC CHANGES WOULD THAT BE SOMETHING YOURE
INTERESTED IN 4HEN THIS IS YOUR LUCKY DAY &OR JUST THREE EASY PAYMENTS OF MINUTES TIME YOU
CAN HAVE ALL THIS 7HEN YOU GET ON THE 0OLYMORPHISM 0LAN YOULL LEARN THE STEPS TO BETTER CLASS
DESIGN THE TRICKS TO POLYMORPHISM THE WAYS TO MAKE FLEXIBLE CODE AND IF YOU ACT NOWA
BONUS LESSON ON THE TIPS FOR EXPLOITING INHERITANCE $ONT DELAY AN OFFER THIS GOOD WILL GIVE
YOU THE DESIGN FREEDOM AND PROGRAMMING FLEXIBILITY YOU DESERVE )TS QUICK ITS EASY AND ITS
AVAILABLE NOW 3TART TODAY AND WELL THROW IN AN EXTRA LEVEL OF ABSTRACTION
WKLVLVDQHZFKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHSRZHURI LQKHULWDQFH
+PIQZ?IZ[:M^Q[Q\ML
2EMEMBER WAY BACK IN CHAPTER WHEN ,ARRY PROCEDURAL GUY
AND "RAD // GUY WERE VYING FOR THE !ERON CHAIR ,ETS LOOK AT
A FEW PIECES OF THAT STORY TO REVIEW THE BASICS OF INHERITANCE
,!229 9OUVE GOT DUPLICATED CODE 4HE ROTATE PROCEDURE
IS IN ALL FOUR 3HAPE THINGS )TS A STUPID DESIGN 9OU HAVE TO
MAINTAIN FOUR DIFFERENT ROTATE hMETHODSv (OW CAN THAT
EVER BE GOOD
"2!$ /H ) GUESS YOU DIDNT SEE THE lNAL DESIGN ,ET ME
SHOW YOU HOW // INHERITANCE WORKS ,ARRY
6TXDUH &LUFOH 7ULDQJOH $PRHED
1 TWWSML I\ _PI\ ITT NW]Z
URWDWH URWDWH URWDWH URWDWH KTI[[M[ PI^M QV KWUUWV
SOD\6RXQG SOD\6RXQG SOD\6RXQG SOD\6RXQG
<PMa¼ZM ;PIXM[ IVL \PMa ITT ZW\I\M IVL 6KDSH
XTIa;W]VL ;W 1 IJ[\ZIK\ML W]\ \PM URWDWH
KWUUWV NMI\]ZM[ IVL X]\ \PMU QV\W I SOD\6RXQG
VM_ KTI[[ KITTML ;PIXM <PMV1TQVSML\PMW\PMZ
6KDSH
[]XMZKTI[[ NW]Z[PIXMKTI[[M[\W
URWDWH
SOD\6RXQG \PMVM_;PIXMKTI[[
QVIZMTI\QWV[PQXKITTML
QVPMZQ\IVKM
<RXFDQUHDGWKLVDV´6TXDUHLQKHULWVIURP6KDSHµ
´&LUFOHLQKHULWVIURP6KDSHµDQGVRRQ,UHPRYHG []JKTI[[M[
URWDWHDQGSOD\6RXQGIURPWKHRWKHUVKDSHVVRQRZ
WKHUH·VRQO\RQHFRS\WRPDLQWDLQ
6TXDUH &LUFOH 7ULDQJOH $PRHED
7KH6KDSHFODVVLVFDOOHGWKHVXSHUFODVVRIWKHRWKHUIRXU
FODVVHV7KHRWKHUIRXUDUHWKHVXEFODVVHVRI6KDSH7KH
VXEFODVVHVLQKHULWWKHPHWKRGVRIWKHVXSHUFODVV,QRWKHU
ZRUGVLIWKH6KDSHFODVVKDVWKHIXQFWLRQDOLW\WKHQWKH
VXEFODVVHVDXWRPDWLFDOO\JHWWKDWVDPHIXQFWLRQDOLW\
FKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP
?PI\IJW]\\PM)UWMJIZW\I\M'
,!229 7ASNT THAT THE WHOLE PROBLEM HERE THAT THE AMOEBA SHAPE
HAD A COMPLETELY DIFFERENT ROTATE AND PLAY3OUND PROCEDURE
UULGH 1RZ
(OW CAN AMOEBA DO SOMETHING DIFFERENT IF IT INHERITS ITS YH
2
FUNCTIONALITY FROM THE 3HAPE CLASS
$V Z
"2!$ 4HATS THE LAST STEP 4HE !MOEBA CLASS OVERRIDES THE N 0H +R
METHODS OF THE 3HAPE CLASS 4HEN AT RUNTIME THE *6- KNOWS
EXACTLY WHICH ROTATE METHOD TO RUN WHEN SOMEONE TELLS THE
!MOEBA TO ROTATE
[]XMZKTI[[
UWZM IJ[\ZIK\
6KDSH
URWDWH
SOD\6RXQG
1 UILM \PM )UWMJI KTI[[ W^MZZQLM
1UILM\PM)UWMJIKTI[[W^MZZQLM\PM
\PM ZW\I\M UM\PWL WN \PM
ZW\I\MIVLXTIa;W]VLUM\PWL[
[]XMZKTI[[ ;PIXM
WN\PM[]XMZKTI[[;PIXM7^MZZQLQVO
[]JKTI[[M[ R][\UMIV[\PI\I[]JKTI[[ZMLMNQVM[
UWZM [XMKQNQK 7^MZZQLQVO R][\ UMIV[ \PI\ I
WVMWNQ\[QVPMZQ\MLUM\PWL[_PMV
[]JKTI[[ ZMLMNQVM[ WVM WN Q\[
Q\VMML[\WKPIVOMWZM`\MVL\PM
QVPMZQ\ML UM\PWL[ _PMV Q\ VMML[
6TXDUH &LUFOH 7ULDQJOH $PRHED
JMPI^QWZWN\PI\UM\PWL
\W KPIVOM WZ M`\MVL \PM JMPI^QWZ
URWDWH WN \PI\ UM\PWL
DPRHEDVSHFLILF
URWDWH FRGH
7^MZZQLQVO UM\PWL[
SOD\6RXQG
DPRHEDVSHFLILF
VRXQG FRGH
YiX`e
gfn\i
(OW WOULD YOU REPRESENT A HOUSE CAT AND A TIGER IN AN
INHERITANCE STRUCTURE )S A DOMESTIC CAT A SPECIALIZED
VERSION OF A TIGER 7HICH WOULD BE THE SUBCLASS AND
WHICH WOULD BE THE SUPERCLASS /R ARE THEY BOTH
SUBCLASSES TO SOME OTHER CLASS
(OW WOULD YOU DESIGN AN INHERITANCE STRUCTURE 7HAT
METHODS WOULD BE OVERRIDDEN
4HINK ABOUT IT "EFORE YOU TURN THE PAGE
\RXDUHKHUH
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHZD\LQKHULWDQFHZRUNV
=VLMZ[\IVLQVO 1VPMZQ\IVKM
?PMV aW] LM[QOV _Q\P QVPMZQ\IVKM aW] X]\ KWUUWV KWLM QV
I KTI[[ IVL \PMV \MTT W\PMZ UWZM [XMKQNQK KTI[[M[ \PI\ \PM
KWUUWV UWZM IJ[\ZIK\ KTI[[ Q[ \PMQZ []XMZKTI[[ ?PMV WVM
KTI[[ QVPMZQ\[ NZWU IVW\PMZ \PM []JKTI[[ QVPMZQ\[ NZWU \PM
[]XMZKTI[[
1V 2I^I _M [Ia \PI\ \PM []JKTI[[ M`\MVL[ \PM []XMZKTI[[
)V QVPMZQ\IVKM ZMTI\QWV[PQX UMIV[ \PI\ \PM []JKTI[[ QVPMZQ\[
\PM UMUJMZ[ WN \PM []XMZKTI[[ ?PMV _M [Ia ¹UMUJMZ[ WN
I KTI[[º _M UMIV \PM QV[\IVKM ^IZQIJTM[ IVL UM\PWL[
.WZ M`IUXTM QN 8IV\PMZ5IV Q[ I []JKTI[[ WN ;]XMZ0MZW \PM
8IV\PMZ5IV KTI[[ I]\WUI\QKITTa QVPMZQ\[ \PM QV[\IVKM ^IZQIJTM[
IVL UM\PWL[ KWUUWV \W ITT []XMZPMZWM[ QVKT]LQVO
IVL
[W WV *]\ \PM 8IV\PMZ5IV []JKTI[[ KIV ILL VM_
UM\PWL[ IVL QV[\IVKM ^IZQIJTM[ WN Q\[ W_V IVL Q\ KIV
W^MZZQLM \PM UM\PWL[ Q\ QVPMZQ\[ NZWU \PM []XMZKTI[[
;]XMZ0MZW
[]XMZKTI[[ 6XSHU+HUR
UWZM IJ[\ZIK\ VXLW
QV[\IVKM ^IZQIJTM[
WLJKWV
VSHFLDO3RZHU [\I\M I\\ZQJ]\M[
XVH6SHFLDO3RZHU UM\PWL[
SXW2Q6XLW JMPI^QWZ
[]JKTI[[M[
UWZM [XMKQNQK
3DQWKHU0DQ 7^MZZQLQVO
)ULHG(JJ0DQ
XVH6SHFLDO3RZHU UM\PWL[
SXW2Q6XLW
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP
)VQVPMZQ\IVKMM`IUXTM" ,LQKHULWHGP\
SXEOLFFODVV'RFWRU^ SURFHGXUHVVR,GLGQ·W
ERWKHUZLWKPHGLFDOVFKRRO
ERROHDQZRUNV$W+RVSLWDO 5HOD[WKLVZRQ·WKXUWDELW
QRZZKHUHGLG,SXWWKDW
YRLGWUHDW3DWLHQW^ SRZHUVDZ
SHUIRUPDFKHFNXS
`
`
SXEOLFFODVV)DPLO\'RFWRUH[WHQGV'RFWRU^
ERROHDQPDNHV+RXVH&DOOV
YRLGJLYH$GYLFH^
JLYHKRPHVSXQDGYLFH
`
SXEOLFFODVV6XUJHRQH[WHQGV'RFWRU^
YRLGWUHDW3DWLHQW^
SHUIRUPVXUJHU\
`
YRLGPDNH,QFLVLRQ^
PDNHLQFLVLRQ\LNHV
`
`
'RFWRU
+RZPDQ\LQVWDQFHYDULDEOHVGRHV
ZRUNV$W+RVSLWDO WVM QV[\IVKM ^IZQIJTM 6XUJHRQKDYH"
WUHDW3DWLHQW WVM UM\PWL +RZPDQ\LQVWDQFHYDULDEOHVGRHV
)DPLO\'RFWRUKDYH"
+RZPDQ\PHWKRGVGRHV'RFWRUKDYH"
[]JKTI[[M[ +RZPDQ\PHWKRGVGRHV6XUJHRQKDYH"
+RZPDQ\PHWKRGVGRHV)DPLO\'RFWRU
6XUJHRQ )DPLO\'RFWRU
$GGV RQH QHZ KDYH"
2YHUULGHV WKH LQKHULWHG PDNHV+RXVH&DOOV
LQVWDQFH YDULDEOH
WUHDW3DWLHQW PHWKRG WUHDW3DWLHQW &DQD)DPLO\'RFWRUGRWUHDW3DWLHQW"
JLYH$GYLFH $GGV RQH QHZ PHWKRG
$GGV RQH QHZ PHWKRG PDNH,QFLVLRQ &DQD)DPLO\'RFWRUGRPDNH,QFLVLRQ"
\RXDUHKHUH
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHVLJQLQJIRULQKHULWDQFH
4M\¼[LM[QOV\PMQVPMZQ\IVKM\ZMMNWZ
IV)VQUIT[QU]TI\QWVXZWOZIU
)MAGINE YOURE ASKED TO DESIGN A SIMULATION PROGRAM THAT
LETS THE USER THROW A BUNCH OF DIFFERENT ANIMALS INTO AN
ENVIRONMENT TO SEE WHAT HAPPENS 7E DONT HAVE TO CODE THE
THING NOW WERE MOSTLY INTERESTED IN THE DESIGN
7EVE BEEN GIVEN A LIST OF SOME OF THE ANIMALS THAT WILL BE
IN THE PROGRAM BUT NOT ALL 7E KNOW THAT EACH ANIMAL WILL
BE REPRESENTED BY AN OBJECT AND THAT THE OBJECTS WILL MOVE
AROUND IN THE ENVIRONMENT DOING WHATEVER IT IS THAT EACH
PARTICULAR TYPE IS PROGRAMMED TO DO
!ND WE WANT OTHER PROGRAMMERS TO BE ABLE TO ADD NEW
KINDS OF ANIMALS TO THE PROGRAM AT ANY TIME
&IRST WE HAVE TO lGURE OUT THE COMMON ABSTRACT
CHARACTERISTICS THAT ALL ANIMALS HAVE AND BUILD THOSE
CHARACTERISTICS INTO A CLASS THAT ALL ANIMAL CLASSES CAN EXTEND
/RRNIRUREMHFWVWKDWKDYHFRPPRQ
DWWULEXWHVDQGEHKDYLRUV
:KDWGRWKHVHVL[W\SHVKDYHLQ
FRPPRQ"7KLVKHOSV\RXWRDEVWUDFW
RXWEHKDYLRUVVWHS
+RZDUHWKHVHW\SHVUHODWHG"7KLV
KHOSV\RXWRGHÀQHWKHLQKHULWDQFH
WUHHUHODWLRQVKLSVVWHS
FKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP
=[QVOQVPMZQ\IVKM\WI^WQL
L]XTQKI\QVOKWLMQV[]JKTI[[M[
7E HAVE l VE INSTANCE VARIABLES
PICTURE n THE l LE NAME REPRESENTING THE *0%'