ÿþJ z y k J a v a : P o d s t a w y , P r o g r a m o w a n i e , Z a s t o s o w a n i a
J a v a 3
1 . J z y k J a v a
P o c z t k i j z y k a J a v a s i g a j r o k u 1 9 9 0 , g d y B i l l J o y n a p i s a B d o k u m e n t p o d t y t u Be m F u r t h e r , w
k t ó r y m s u g e r o w a B i n |y n i e r o m S u n M i c r o s y s t e m s s t w o r z e n i e o b i e k t o w e g o [r o d o w i s k a w o p a r c i u o
C + + . D o k u m e n t t e n m i a B p e w i e n w p By w n a t w ó r c ó w p r o j e k t u G r e e n ( J a m e s G o s l i n g , P a t r i c k
N a u g h t o n i M i k e S h e r i d a n ) . W r o k u 1 9 9 1 w r a m a c h p r o j e k t u G r e e n o p r a c o w a n o w j z y k u C
k o m p i l a t o r o r a z i n t e r p r e t a t o r w y n a l e z i o n e g o p r z e z G o s l i n g a j z y k a O A K ( O b j e c t A p p l i c a t i o n K e r n e l ) ,
k t ó r y m i a B b y n a r z d z i e m d o o p r o g r a m o w a n i a i n t e l i g e n t n y c h k o n s u m e n c k i c h u r z d z e D
e l e k t r o n i c z n y c h . P o n i e w a | n a z w a O A K o k a z a Ba s i z a s t r z e |o n a , z m i e n i o n o j n a J a v a .
O b e c n i e n a l e |y r a c z e j m ó w i o [r o d o w i s k u J a v a , n a k t ó r e s k Ba d a s i :
1 . O b i e k t o w y j z y k J a v a , k t ó r e g o s k Ba d n i a w y k a z u j e z n a c z n e p o d o b i e Ds t w o d o s k Ba d n i j z y k a C + + .
N a z w a p l i k u z p r o g r a m e m zr ó d Bo w y m w j z y k u J a v a , m a p o s t a n a z w a . j a v a , g d z i e n a z w a
m u s i b y n a z w z d e f i n i o w a n e j w t y m p l i k u k l a s y . J e |e l i p l i k n a z w a . j a v a z a w i e r a d e f i n i c j e w i e l u
k l a s , a w [r ó d n i c h j e d n k l a s p u b l i c z n , t o n a z w a m u s i b y n a z w t e j k l a s y p u b l i c z n e j .
2 . K o m p i l a t o r , k t ó r y p r z e t w a r z a p r o g r a m n a z w a . j a v a n a t a k z w a n y B - k o d ( b y t e c o d e , J - c o d e ) ,
z a p i s y w a n y a u t o m a t y c z n i e w p l i k a c h z r o z s z e r z e n i e m n a z w y . c l a s s . B - k o d j e s t p r z e n o [n
p o s t a c i p r o g r a m u , k t ó r a m o |e b y z i n t e r p r e t o w a n a p r z e z o d p o w i e d n i m a s z y n w i r t u a l n , t o j e s t
u r z d z e n i e l o g i c z n e , n a k t ó r y m b d z i e w y k o n y w a n y p r o g r a m b i n a r n y .
3 . S p e c y f i k a c j e m a s z y n y w i r t u a l n e j J a v a ( J V M J a v a V i r t u a l M a c h i n e ) i p l i k ó w k l a s . J V M m o |n a
u w a |a z a a b s t r a k c y j n y k o m p u t e r , k t ó r y w y k o n u j e p r o g r a m y , z a p i s a n e w p l i k a c h z r o z s z e r z e n i e m
n a z w y . c l a s s . M a s z y n a w i r t u a l n a m o |e b y i m p l e m e n t o w a n a n a r z e c z y w i s t y c h k o m p u t e r a c h n a
w i e l e s p o s o b ó w , n a p r z y k Ba d j a k o i n t e r p r e t a t o r w b u d o w a n y w p r z e g l d a r k W W W ( n p . N e t s c a p e ) ,
l u b j a k o o d d z i e l n y p r o g r a m , k t ó r y i n t e r p r e t u j e p l i k i n a z w a . c l a s s . M o |e t o b y t a k |e
i m p l e m e n t a c j a p o l e g a j c a n a p r z e k s z t a Bc e n i u t u | p r z e d r o z p o c z c i e m f a z y w y k o n a n i a p l i k u z
B - k o d e m n a p r o g r a m w y k o n a l n y , s p e c y f i c z n y d l a d a n e j m a s z y n y . M e c h a n i z m t e n m o |n a o k r e [l i
j a k o t w o r z e n i e k o d u w y k o n a l n e g o w l o c i e ( a n g . J u s t - I n - T i m e , n p . k o m p i l a t o r J I T f i r m y S y m a n t e c ) .
I n t e r p r e t a t o r y B - k o d u , t j . r ó |n e m a s z y n y w i r t u a l n e , s t a k |e c z s t o n a p i s a n e w j z y k u J a v a .
4 . B i b l i o t e k a J a v y . Zr o d o w i s k o j z y k a J a v a z a w i e r a b o g a t b i b l i o t e k , a w n i e j z b i ó r s k Ba d n i k ó w d l a
p r o s t e g o , n i e z a l e |n e g o o d p l a t f o r m y g r a f i c z n e g o i n t e r f e j s u u |y t k o w n i k a .
R y s u n e k 4 - 1 i l u s t r u j e u s y t u o w a n i e [r o d o w i s k a p r o g r a m o w e g o j z y k a J a v a , p o s a d o w i o n e g o n a
d o w o l n e j p l a t f o r m i e s p r z t o w o - p r o g r a m o w e j k o m p u t e r a ( p l a t f o r m a s p r z t o w o - p r o g r a m o w a o z n a c z a
s p r z t k o m p u t e r a i j e g o s y s t e m o p e r a c y j n y ) .
a ) b )
M y P r o g r a m . j a v a
P r o g r a m w j z y k u J a v a
J a v a A P I
K l a s a S y s t e m
M a s z y n a w i r t u a l n a ( J V M )
P l a t f o r m a s p r z t o w o - p r o g r a m o w a
Zr o d o w i s k o w y k o n a w c z e
R y s . 1 - 1 . U s y t u o w a n i e s y s t e m u J a v a
P o k a z a n y w c z [c i a ) r y s u n k u b l o k J a v a A P I ( A p p l i c a t i o n P r o g r a m m i n g I n t e r f a c e ) r e p r e z e n t u j e k l a s y ,
i n t e r f e j s y i o b i e k t y w c h o d z c e w s k Ba d a k t u a l n e j m a s z y n y w i r t u a l n e j , k t ó r z w y k l e o k r e [l a s i j a k o
p l a t f o r m j z y k a J a v a ( J a v a P l a t f o r m ) . U m o |l i w i a j o n e p r o g r a m o m j z y k a J a v a n a d o s t p d o
z a s o b ó w k o m p u t e r a . M o |e t o b y d o s t p ( w z g l d n i e ) s y s t e m o w o n i e z a l e |n y ( i m p l e m e n t o w a n y p r z e z
k l a s S y s t e m w p a k i e c i e J D K ) i n a d o s t p s y s t e m o w o z a l e |n y ( i m p l e m e n t o w a n y p r z e z k l a s R u n t i m e ,
r e p r e z e n t u j c [r o d o w i s k o w y k o n a w c z e w p a k i e c i e J D K ) , j a k p o k a z a n o w c z [c i b ) r y s u n k u 4 - 1 .
4 J z y k i o b i e k t o w e
T a k w i c p r o g r a m y u |y t k o w n i k a m o |n a k o m p i l o w a n a d o w o l n e j p l a t f o r m i e s p r z t o w o - p r o g r a m o w e j ,
n a k t ó r e j p o s a d o w i o n o k o m p i l a t o r j z y k a J a v a . O t r z y m a n y w w y n i k u k o m p i l a c j i B - k o d m o |n a
t r a k t o w a j a k o z b i ó r i n s t r u k c j i k o d u d l a d o w o l n e j i m p l e m e n t a c j i m a s z y n y w i r t u a l n e j , j a k p o k a z a n o n a
r y s u n k u 4 - 2 .
M y P r o g r a m . j a v a
K o m p i l a t o r
E d y t o r
M y P r o g r a m . c l a s s
I n t e r p r e t a t o r I n t e r p r e t a t o r
S U N - S o l a r i s
P C - W i n d o w s 9 5 / N T
R y s . 1 - 2 . P r z e t w a r z a n i e p r o g r a m ó w u |y t k o w n i k a
1 . 1 . E l e m e n t a r n y p r o g r a m : t e k s t zr ó d Bo w y , k o m p i l a c j a , i n t e r p r e t a c j a
J a v a w p r o w a d z a s w o i s t t e r m i n o l o g i d l a s w o i c h k o n s t r u k c j i s y n t a k t y c z n y c h i j e d n o s t e k ( m o d u Bó w )
k o m p i l a c j i . P r o g r a m e m w j z y k u J a v a j e s t a p l i k a c j a ( a p p l i c a t i o n ) l u b a p l e t ( a p p l e t ) . A p l i k a c j a j e s t
p r o g r a m e m s a m o d z i e l n y m , z a [ a p l e t j e s t p r o g r a m e m w b u d o w a n y m ( n p . w p r z e g l d a r k W W W ) .
K a |d a a p l i k a c j a m u s i z a w i e r a d o k Ba d n i e j e d e n m o d u B zr ó d Bo w y n a z y w a n y m o d u Be m g Bó w n y m
a p l i k a c j i , k t ó r e g o k l a s a z a w i e r a p u b l i c z n f u n k c j k l a s y ( f u n k c j e t a k i e s p o p r z e d z a n e s Bo w e m
k l u c z o w y m s t a t i c ) m a i n . T e k s t zr ó d Bo w y n a j p r o s t s z e g o p r o g r a m u m o |e m i e p o s t a :
/ / p l i k H e l l o . j a v a
p u b l i c c l a s s H e l l o {
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] )
{
S y s t e m . o u t . p r i n t ( " H e l l o , W o r l d ! \ n " ) ;
} / / e n d m a i n
} / / e n d H e l l o
D l a s k o m p i l o w a n i a p o w y |s z e g o p r o g r a m u j e g o t e k s t zr ó d Bo w y n a l e |y u m i e [c i w p l i k u o n a z w i e
H e l l o . j a v a . Z a k Ba d a j c , |e d y s p o n u j e m y s y s t e m e m J D K z k o m p i l a t o r e m j a v a c , p r o g r a m s k o m p i l u j e m y
p o l e c e n i e m :
j a v a c H e l l o . j a v a
U d a n a k o m p i l a c j a w y g e n e r u j e p l i k z B - k o d e m o n a z w i e H e l l o . c l a s s , z a w i e r a j c y s e k w e n c j i n s t r u k c j i
d l a i n t e r p r e t a t o r a J V M . K o d t e n w y k o n u j e m y p r z e z w y w o Ba n i e i n t e r p r e t a t o r a o n a z w i e j a v a
p o l e c e n i e m :
j a v a H e l l o
I n t e r p r e t a t o r w y s z u k a p l i k o n a z w i e H e l l o . c l a s s , u s t a l i , c z y k l a s a H e l l o z a w i e r a p u b l i c z n m e t o d
s t a t y c z n m a i n i w y k o n a i n s t r u k c j e z a w a r t e w b l o k u m a i n . Z a u w a |m y p r z y o k a z j i , |e w j z y k u J a v a
w s z y s t k i e s t a Be , z m i e n n e i f u n k c j e s e l e m e n t a m i s k Ba d o w y m i k l a s ; n i e m a w i e l k o [c i g l o b a l n y c h ,
d e f i n i o w a n y c h p o z a k l a s . P o n a d t o n i e d e k l a r u j e s i m e t o d ( f u n k c j i ) s k Ba d o w y c h j a k o r o z w i j a l n y c h
( i n l i n e ) b d z n i e d e c y z j a n a l e |y d o k o m p i l a t o r a .
W p r z y k Ba d o w y m p r o g r a m i e d o m e t o d y m a i n j a k o p a r a m e t r j e s t p r z e k a z y w a n a ( z w i e r s z a
r o z k a z o w e g o ) t a b l i c a o b i e k t ó w ( Ba Dc u c h ó w ) k l a s y S t r i n g ; m e t o d a m a i n n i e z w r a c a w y n i k u ( t y p e m
z w r a c a n y m j e s t v o i d ) , z a [ w a r t o [c i p a r a m e t r u a r g [ 0 ] j e s t p i e r w s z y p o n a z w i e p r o g r a m u s p ó j n y c i g
z n a k ó w . C i a Bo m a i n z a w i e r a j e d n i n s t r u k c j
S y s t e m . o u t . p r i n t ( " H e l l o , W o r l d ! \ n " ) ;
( W j z y k u J a v a k a |d a i n s t r u k c j a k o Dc z y s i [r e d n i k i e m , k t ó r y p e Bn i r o l s y m b o l u t e r m i n a l n e g o ) .
S Bo w o S y s t e m j e s t n a z w k l a s y w s t a n d a r d o w y m [r o d o w i s k u j z y k a . K l a s a S y s t e m z a w i e r a
s t a t y c z n y o b i e k t s k Ba d o w y t y p u P r i n t S t r e a m o n a z w i e o u t ; w y w o Ba n i e S y s t e m . o u t o z n a c z a
J a v a 5
p i s a n i e d o s t a n d a r d o w e g o s t r u m i e n i a w y j [c i o w e g o . K l a s a P r i n t S t r e a m z a w i e r a s z e r e g p r z e c i |e D
m e t o d y o n a z w i e p r i n t ; j e d n o z n i c h p r z y j m u j e p a r a m e t r t y p u S t r i n g . K o m p i l a t o r a u t o m a t y c z n i e
t Bu m a c z y l i t e r a B s t a By " H e l l o , W o r l d \ n " n a o d p o w i e d n i o b i e k t k l a s y S t r i n g ; o d n o [n i k ( r e f e r e n c j a ) d o
t e g o o b i e k t u j e s t p r z e k a z y w a n a d o m e t o d y S y s t e m . o u t . p r i n t ( ) . M e t o d a p r i n t ( ) g e n e r u j e
j e d e n w i e r s z w y j [c i o w y i p o w r a c a d o m e t o d y m a i n , k t ó r a k o Dc z y w y k o n a n i e .
1 . 2 . K l a s y : d e f i n i c j a , d z i e d z i c z e n i e , t w o r z e n i e o b i e k t ó w
K l a s J a v y m o |n a t r a k t o w a j a k o w z o r z e c i j e d n o c z e [n i e g e n e r a t o r o b i e k t ó w . J a k o w z o r z e c k l a s a
z a p e w n i a h e r m e t y z a c j ( z a m k n i c i e w j e d n e j j e d n o s t c e s y n t a k t y c z n e j ) d a n y c h i m e t o d o r a z u k r y w a n i e
i n f o r m a c j i , k t ó r e n i e p o w i n n y b y w i d o c z n e d l a u |y t k o w n i k a . J a k o g e n e r a t o r z a p e w n i a t w o r z e n i e
o b i e k t ó w z a p o m o c o p e r a t o r a n e w , k t ó r e g o a r g u m e n t e m j e s t k o n s t r u k t o r k l a s y .
D e f i n i c j a k l a s y m a p o s t a :
D e k l a r a c j a k l a s y
{
C i a Bo k l a s y
}
D e k l a r a c j a k l a s y s k Ba d a s i w n a j p r o s t s z y m p r z y p a d k u z e s Bo w a k l u c z o w e g o c l a s s i n a z w y k l a s y .
P r z e d s Bo w e m k l u c z o w y m c l a s s m o |e w y s t p i j e d e n z e s p e c y f i k a t o r ó w : a b s t r a c t , p u b l i c , f i n a l , l u b
d w a z n i c h , n p . p u b l i c a b s t r a c t , p u b l i c f i n a l . S p e c y f i k a t o r a b s t r a c t o d n o s i s i d o k l a s a b s t r a k c y j n y c h ,
k t ó r e n i e m o g m i e w y s t p i e D, z a [ f i n a l d e k l a r u j e , |e d a n a k l a s a n i e m o |e m i e p o d k l a s . B r a k
s p e c y f i k a t o r a o z n a c z a , |e d a n a k l a s a j e s t d o s t p n a t y l k o d l a k l a s z d e f i n i o w a n y c h w t y m s a m y m
p a k i e c i e . S p e c y f i k a t o r p u b l i c m ó w i , |e k l a s a j e s t d o s t p n a p u b l i c z n i e . K l a s a a b s t r a k c y j n a m o |e
z a w i e r a m e t o d y a b s t r a k c y j n e ( b e z i m p l e m e n t a c j i , p o p r z e d z o n e s Bo w e m k l u c z o w y m a b s t r a c t ; w
m i e j s c u c i a Ba m e t o d y a b s t r a k c y j n e j w y s t p u j e [r e d n i k ) .
P o n a z w i e k l a s y m o g w y s t p i f r a z y : e x t e n d s n a z w a _ s u p e r k l a s y o r a z i m p l e m e n t s
n a z w y _ i n t e r f e j s ó w . F r a z a e x t e n d s n a z w a _ s u p e r k l a s y m ó w i , |e k l a s a d z i e d z i c z y ( z a w s z e p u b l i c z n i e )
o d k l a s y n a z w a _ s u p e r k l a s y , z a [ i m p l e m e n t s n a z w y _ i n t e r f e j s ó w d e k l a r u j e , |e w d a n e j k l a s i e z o s t a n
z d e f i n i o w a n e m e t o d y , z a d e k l a r o w a n e w i m p l e m e n t o w a n y c h i n t e r f e j s a c h . J e |e l i d a n a k l a s a
i m p l e m e n t u j e w i c e j n i | j e d e n i n t e r f e j s , w t e d y n a z w y k o l e j n y c h i n t e r f e j s ó w o d d z i e l a s i p r z e c i n k a m i .
P o d k l a s a k l a s y a b s t r a k c y j n e j z a w i e r a j c e j m e t o d y a b s t r a k c y j n e m o |e p o d a w a d e f i n i c j e m e t o d
a b s t r a k c y j n y c h . P o d k l a s a p o d a j c a t e d e f i n i c j e s t a j e s i k l a s k o n k r e t n , t j . m o |e m i e w y s t p i e n i a .
K a |d a k l a s a , k t ó r a o d z i e d z i c z y m e t o d a b s t r a k c y j n , a l e n i e d o s t a r c z y j e j i m p l e m e n t a c j i , s a m a s t a j e
s i k l a s a b s t r a k c y j n , a j e j d e f i n i c j a t a k |e m u s i b y p o p r z e d z o n a s Bo w e m k l u c z o w y m a b s t r a c t .
U w a g a . W j z y k u J a v a k a |d a k l a s a d z i e d z i c z y o d p r e d e f i n i o w a n e j k l a s y O b j e c t . Z a t e m , j e |e l i w
d e f i n i c j i k l a s y n i e w y s t p u j e f r a z a e x t e n d s , t o j e s t t o r ó w n o w a |n e n i e j a w n e m u w y s t p i e n i u w t e j
d e f i n i c j i f r a z y e x t e n d s O b j e c t .
Z a u w a |m y , |e o p r ó c z s Bo w a k l u c z o w e g o c l a s s i n a z w y k l a s y w s z y s t k i e p o z o s t a Be e l e m e n t y w
d e k l a r a c j i k l a s y s o p c j o n a l n e . J e |e l i n i e u m i e [c i m y i c h w d e k l a r a c j i , t o k o m p i l a t o r p r z y j m i e
d o m y [n i e , |e k l a s a j e s t n i e p u b l i c z n , n i e a b s t r a k c y j n i n i e f i n a l n p o d k l a s p r e d e f i n i o w a n e j k l a s y
O b j e c t .
C i a Bo k l a s y j e s t z a m k n i t e w n a w i a s y k l a m r o w e i m o |e z a w i e r a z m i e n n e s k Ba d o w e ( t o j e s t p o l a l u b
z m i e n n e w y s t p i e n i a ) , z m i e n n e k l a s y ( s t a t y c z n e , t j . p o p r z e d z o n e s Bo w e m k l u c z o w y m s t a t i c ) ,
k o n s t r u k t o r y i m e t o d y o r a z f u n k c j e k l a s y ( s t a t y c z n e ) . N a z w a k a |d e j z m i e n n e j s k Ba d o w e j , z m i e n n e j
k l a s y , m e t o d y l u b f u n k c j i k l a s y m u s i b y p o p r z e d z o n a n a z w t y p u ( n p . b o o l e a n , d o u b l e , c h a r , f l o a t ,
i n t , l o n g , v o i d ) . P r z e d n a z w t y p u m o |e w y s t p i j e d e n z e s p e c y f i k a t o r ó w d o s t p u : p r i v a t e ( d o s t p
t y l k o d l a e l e m e n t ó w k l a s y , n p . p r i v a t e d o u b l e d ; ) , p r o t e c t e d ( d o s t p t y l k o w p o d k l a s i e , n a w e t j e [l i
p o d k l a s a n a l e |y d o i n n e g o p a k i e t u ; n i e d o t y c z y z m i e n n y c h k l a s y ) l u b p u b l i c ( d o s t p p u b l i c z n y ) . B r a k
s p e c y f i k a t o r a o z n a c z a , |e d a n y e l e m e n t j e s t d o s t p n y t y l k o d l a k l a s w t y m s a m y m p a k i e c i e . P o
s p e c y f i k a t o r z e d o s t p u m o |e w y s t p i s Bo w o k l u c z o w e f i n a l . S Bo w o f i n a l p r z e d n a z w t y p u z m i e n n e j
w y s t p i e n i a l u b z m i e n n e j k l a s y d e k l a r u j e j e j n i e m o d y f i k o w a l n o [ ( n p . p u b l i c s t a t i c f i n a l i n t i = 1 0 ; ) ,
z a [ w o d n i e s i e n i u d o m e t o d y o z n a c z a , |e n i e m o |e o n a b y r e d e f i n i o w a n a w p o d k l a s i e ( n p . p u b l i c
f i n a l v o i d f ( i n t i ) { / * . . . * / } ) .
6 J z y k i o b i e k t o w e
D o s t p d o e l e m e n t ó w k l a s y u z y s k u j e s i z a p o m o c o p e r a t o r a k r o p k o w e g o . J e |e l i e l e m e n t d a n e j k l a s y
( z m i e n n a l u b m e t o d a ) p r z e s Ba n i a ( o v e r r i d e s ) j a k i [ e l e m e n t s w o j e j s u p e r k l a s y , t o m o |n a s i d o n i e g o
o d w o Ba z a p o m o c s Bo w a k l u c z o w e g o s u p e r , j a k w p o n i |s z y m p r z y k Ba d z i e :
c l a s s A S i l l y C l a s s / * D e k l a r a c j a k l a s y * /
{
s t a t i c f i n a l i n t M A X = 1 0 0 ; / * * D e f i n i c j a s t a Be j * /
b o o l e a n a V a r i a b l e ; / * D e k l a r a c j a z m i e n n e j w y s t p i e n i a * /
s t a t i c p u b l i c i n t x = 1 0 ; / / D e f i n i c j a z m i e n n e j k l a s y
v o i d a M e t h o d ( ) { / / D e f i n i c j a m e t o d y
a V a r i a b l e = t r u e ; / / I n s t r u k c j a p r z y p i s a n i a
} / / e n d a M e t h o d
} / / e n d a S i l l y C l a s s
c l a s s A S i l l e r C l a s s e x t e n d s A S i l l y C l a s s {
b o o l e a n a V a r i a b l e ;
v o i d a M e t h o d ( ) {
a V a r i a b l e = f a l s e ;
s u p e r . a M e t h o d ( ) ; / * W y w o Ba n i e m e t o d y s u p e r k l a s y * /
S y s t e m . o u t . p r i n t l n ( a V a r i a b l e ) ;
S y s t e m . o u t . p r i n t l n ( s u p e r . a V a r i a b l e ) ;
} / / e n d a M e t h o d
} / / e n d A S i l l e r C l a s s
K l a s y i o m a w i a n e n i |e j i n t e r f e j s y s t y p a m i r e f e r e n c y j n y m i ( o d n o [n i k o w y m i ) . W a r t o [c i a m i
z m i e n n y c h t y c h t y p ó w s o d n o [n i k i d o w a r t o [c i l u b z b i o r ó w w a r t o [c i r e p r e z e n t o w a n y c h p r z e z t e
z m i e n n e . N p . i n s t r u k c j a
A S i l l y C l a s s o o b ;
j e d y n i e p o w i a d a m i a k o m p i l a t o r , |e b d z i e m y u |y w a z m i e n n e j o o b , k t ó r e j t y p e m j e s t A S i l l y C l a s s .
D o z m i e n n e j o o b m o |e m y p r z y p i s a d o w o l n y o b i e k t t y p u A S i l l y C l a s s u t w o r z o n y z a p o m o c
o p e r a t o r a n e w :
o o b = n e w A S i l l y C l a s s ( ) ;
W p o w y |s z e j i n s t r u k c j i a r g u m e n t e m o p e r a t o r a n e w j e s t g e n e r o w a n y p r z e z k o m p i l a t o r k o n s t r u k t o r
A S i l l y C l a s s ( ) k l a s y A S i l l y C l a s s , k t ó r y i n i c j u j e o b i e k t u t w o r z o n y p r z e z o p e r a t o r n e w . O p e r a t o r n e w
z w r a c a o d n o [n i k d o t e g o o b i e k t u , p o c z y m p r z y p i s u j e g o d o z m i e n n e j o o b .
J e |e l i d a n a k l a s a n i e z a w i e r a d e k l a r a c j i k o n s t r u k t o r ó w , t o k o m p i l a t o r d o s t a r c z a k o n s t r u k t o r d o m y [l n y
z p u s t y m w y k a z e m a r g u m e n t ó w , k t ó r y w s w o i m b l o k u w y w o Bu j e k o n s t r u k t o r s u p e r ( ) j e j b e z p o [r e d n i e j
n a d k l a s y . W e zm y d l a i l u s t r a c j i d e f i n i c j k l a s y P o i n t :
p u b l i c c l a s s P o i n t { i n t x , , y ; }
J e s t o n a r ó w n o w a |n a d e f i n i c j i
p u b l i c c l a s s P o i n t { i n t x , , y ; p u b l i c P o i n t ( ) { s u p e r ( ) ; } }
z n i e j a w n y m w y w o Ba n i e m d o s t a r c z a n e g o p r z e z k o m p i l a t o r k o n s t r u k t o r a s u p e r k l a s y , o d k t ó r e j
b e z p o [r e d n i o d z i e d z i c z y k l a s a P o i n t .
P o d o b n e , n i e j a w n e w y w o Ba n i a k o n s t r u k t o r a s u p e r ( ) s w y k o n y w a n e w d r z e w a c h d z i e d z i c z e n i a .
R o z p a t r z m y n a s t p u j c y p r o g r a m :
/ / p l i k S u p e r 1 . j a v a
c l a s s P o i n t { i n t x , y ; P o i n t ( ) { x = 1 ; y = 2 ; } }
c l a s s C P o i n t e x t e n d s P o i n t { p u b l i c i n t c o l o r = 0 x F F 0 0 F F ; }
p u b l i c c l a s s S u p e r 1 {
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
C P o i n t c p = n e w C P o i n t ( ) ;
S y s t e m . o u t . p r i n t l n ( " c p . c o l o r = " + c p . c o l o r ) ;
S y s t e m . o u t . p r i n t l n ( " c p . x = " + c p . x ) ;
} / / e n d m a i n
} / / e n d S u p e r 1
I n s t r u k c j a C P o i n t c p = n e w C P o i n t ( ) ; t w o r z y n o w e w y s t p i e n i e k l a s y C P o i n t . N a j p i e r w
j e s t p r z y d z i e l a n y o b s z a r w p a m i c i d l a o b i e k t u c p , a b y m ó g B p r z e c h o w y w a w a r t o [c i x o r a z y , p o
J a v a 7
c z y m p o l a t e s i n i c j o w a n e d o w a r t o [c i d o m y [l n y c h ( t u t a j z e r o d l a k a |d e g o p o l a ) . N a s t p n i e j e s t
w o Ba n y k o n s t r u k t o r C p o i n t ( ) . P o n i e w a | k l a s a C P o i n t n i e d e k l a r u j e k o n s t r u k t o r ó w , k o m p i l a t o r
a u t o m a t y c z n i e d o s t a r c z y k o n s t r u k t o r o p o s t a c i C P o i n t ( ) { s u p e r ( ) ; } , k t ó r y w y w o Ba k o n s t r u k t o r
k l a s y P o i n t b e z a r g u m e n t ó w , t a k j a k b y z a m i a s t s u p e r ( ) n a p i s a n o :
P o i n t ( ) { s u p e r ( ) ; x = 1 ; y = 2 ; } .
W h i e r a r c h i i d z i e d z i c z e n i a k o n s t r u k t o r s u p e r ( ) m o |e b y w y w o By w a n y j a w n i e , j a k w p r z y k Ba d z i e
p o n i |e j :
/ / p l i k S u p e r 2 . j a v a
c l a s s P o i n t { i n t x , y ; P o i n t ( i n t x , i n t y )
{ t h i s . x = x ; t h i s . y = y ; } }
c l a s s C P o i n t e x t e n d s P o i n t {
s t a t i c f i n a l i n t W H I T E = 0 , B L A C K = 1 ;
i n t c o l o r ;
C P o i n t ( i n t x , i n t y ) { t h i s ( x , y , W H I T E ) ; }
C P o i n t ( i n t x , i n t y , i n t c o l o r ) { s u p e r ( x , y ) ; t h i s . c o l o r = c o l o r ; }
}
p u b l i c c l a s s S u p e r 2 {
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
i n t a = 1 0 , b = 2 0 ;
C P o i n t c p = n e w C P o i n t ( a , b ) ;
S y s t e m . o u t . p r i n t l n ( " c p . c o l o r = " + c p . c o l o r ) ;
S y s t e m . o u t . p r i n t l n ( " c p . x = " + c p . x ) ;
} / / e n d m a i n
} / / e n d S u p e r 2
Z m i e n n a t h i s w d e f i n i c j i k o n s t r u k t o r a k l a s y P o i n t j e s t o d n o [n i k i e m ( r e f e r e n c j ) , i d e n t y f i k u j c y m
o b i e k t , n a r z e c z k t ó r e g o w y w o Bu j e s i k o n s t r u k t o r . T a k w i c l e w a s t r o n a i n s t r u k c j i t h i s . x = x
i d e n t y f i k u j e p o l e x o b i e k t u k l a s y P o i n t , z a [ p r a w a s t r o n a j e s t w a r t o [c i a r g u m e n t u x , k t ó r i n i c j u j e
s i t o p o l e . N a t o m i a s t s Bo w o k l u c z o w e t h i s w d e f i n i c j i d w u a r g u m e n t o w e g o k o n s t r u k t o r a k l a s y
C P o i n t s Bu |y d o w y w o Ba n i a k o n s t r u k t o r a t r ó j a r g u m e n t o w e g o t e j k l a s y w i n s t r u k c j i
t h i s ( x , y , W H I T E ) .
Z a t e m w i n s t r u k c j i C P o i n t c p = n e w C P o i n t ( a , b ) ; k o n s t r u k t o r C P o i n t ( i n t , i n t ) w y w o Bu j e z e s w o j e g o
b l o k u ( i n s t r u k c j a t h i s ( x , y , W H I T E ) ; ) d r u g i k o n s t r u k t o r , C P o i n t ( i n t , i n t , i n t ) , d o s t a r c z a j c m u a r g u m e n t
W H I T E . D r u g i k o n s t r u k t o r w o Ba k o n s t r u k t o r s u p e r k l a s y , p r z e k a z u j e m u w s p ó Br z d n e x o r a z y , a
n a s t p n i e i n i c j u j e p o l e c o l o r w a r t o [c i W H I T E .
U w a g a . i n s t r u k c j a { t h i s ( a r g u m e n t y ) ; m u s i b y p i e r w s z i n s t r u k c j w c i e l e k o n s t r u k t o r a l u b m e t o d y ;
t o s a m o d o t y c z y i n s t r u k c j i s u p e r ( a r g u m e n t y ) ; .
D o s t p d o z m i e n n y c h s k Ba d o w y c h k l a s y ( s t a t y c z n y c h ) j e s t m o |l i w y b e z t w o r z e n i a o b i e k t ó w t e j k l a s y .
N p . d l a k l a s y A S i l l y C l a s s m o |e m y n a p i s a i n s t r u k c j :
S y s t e m . o u t . p r i n t l n ( A S i l l y C l a s s . x ) ; .
G d y b y w k l a s i e A S i l l y C l a s s z d e f i n i o w a s t a t y c z n f u n k c j k l a s y , n p .
p u b l i c s t a t i c v o i d b M e t h o d ( ) { / * i n s t r u k c j e * / }
t o w t a k i e j f u n k c j i n i e i s t n i e j e o d n o [n i k t h i s , a z a t e m |a d n a z j e j i n s t r u k c j i n i e m o |e s i b e z p o [r e d n i o
o d w o Ba d o n i e s t a t y c z n e j s k Ba d o w e j x ; o d w o Ba n i e b y Bo b y m o |l i w e j e d y n i e p r z e z z a d e k l a r o w a n i e
z m i e n n e j o d n o [n i k o w e j d o k l a s y A S i l l y C l a s s i z a i n i c j o w a n i e j e j o d n o [n i k i e m d o u t w o r z o n e g o z a
p o m o c o p e r a t o r a n e w n o w e g o o b i e k t u , j a k p o k a z a n o w p o n i |s z e j s e k w e n c j i i n s t r u k c j i :
A S i l l y C l a s s o b = n e w A S i l l y C l a s s ( ) ;
S y s t e m . o u t . p r i n t l n ( o b . x ) ; .
1 . 3 . I n t e r f e j s y
K o n s t r u k c j a o p o s t a c i
i n t e r f a c e n a z w a {
/ * D e k l a r a c j e m e t o d i d e f i n i c j e s t a By c h * /
}
8 J z y k i o b i e k t o w e
j e s t w j z y k u J a v a t y p e m d e f i n i o w a n y m p r z e z u |y t k o w n i k a . D e k l a r a c j a m e t o d y s k Ba d a s i z
s y g n a t u r y ( s y g n a t u r a m e t o d y z a w i e r a t y p z w r a c a n y , n a z w m e t o d y i t y p y a r g u m e n t ó w ) i t e r m i n a l n e g o
[r e d n i k a . P o n i e w a | i n t e r f e j s m o |e z a w i e r a j e d y n i e d e k l a r a c j e m e t o d i d e f i n i c j e s t a By c h , o d p o w i a d a
o n k l a s i e a b s t r a k c y j n e j z z a d e k l a r o w a n y m i p u b l i c z n y m i p o l a m i d a n y c h i m e t o d a m i a b s t r a k c y j n y m i .
W z w i z k u z t y m w d e f i n i c j i i n t e r f e j s u z a b r a n i a s i u |y w a n i a s p e c y f i k a t o r ó w p r i v a t e i p r o t e c t e d , z a [
u |y c i e s p e c y f i k a t o r ó w a b s t r a c t i p u b l i c j e s t z b y t e c z n e .
W e zm y d l a p r z y k Ba d u d w a i n t e r f e j s y P l a n e L i k e i B o a t L i k e
i n t e r f a c e P l a n e L i k e {
v o i d t a k e O f f ( ) ;
f l o a t k m p h ( ) ;
}
i n t e r f a c e B o a t L i k e {
v o i d s w i m ( ) ;
f l o a t k n o t s ( ) ;
}
i z d e f i n i u j m y i c h i m p l e m e n t a c j e w k l a s a c h P l a n e i B o a t , k t ó r e d z i e d z i c z o d w s p ó l n e j s u p e r k l a s y
V e h i c l e :
c l a s s V e h i c l e { }
c l a s s P l a n e e x t e n d s V e h i c l e i m p l e m e n t s P l a n e L i k e {
/ * P l a n e m u s t i m p l e m e n t k m p h ( ) , t a k e O f f ( ) * /
p u b l i c v o i d t a k e O f f ( ) { S y s t e m . o u t . p r i n t l n ( " P l a n e i s t a k i n g o f f " ) ; }
p u b l i c f l o a t k m p h ( ) { r e t u r n 6 0 0 ; }
}
c l a s s B o a t e x t e n d s V e h i c l e i m p l e m e n t s B o a t L i k e {
/ * B o a t m u s t i m p l e m e n t k n o t s ( ) , s w i m ( ) * /
p u b l i c v o i d s w i m ( ) { S y s t e m . o u t . p r i n t l n ( " B o a t i s s w i m m i n g " ) ; }
p u b l i c f l o a t k n o t s ( ) { r e t u r n 2 0 ; }
}
P o p r a w n e b d w ó w c z a s d e k l a r a c j e
P l a n e b i p l a n e = n e w P l a n e ( ) ;
b i p l a n e . t a k e O f f ( ) ;
B o a t v e s s e l = n e w B o a t ( ) ;
v e s s e l . s w i m ( ) ;
a t a k |e d e k l a r a c j e
P l a n e L i k e a i r c r a f t = n e w P l a n e ( ) ;
a i r c r a f t . t a k e O f f ( ) ;
B o a t L i k e m o t o r b o a t = n e w B o a t ( ) ;
m o t o r b o a t . s w i m ( ) ;
Z a Bó |m y t e r a z , |e c h c i e l i b y [m y s k o n s t r u o w a k l a s S e a P l a n e , k t ó r e j o b i e k t y p o w i n n y s i
z a c h o w y w a w p e w n y c h o k o l i c z n o [c i a c h j a k p o j a z d y w o d n e , z a [ w i n n y c h j a k p o j a z d y p o w i e t r z n e .
W j z y k u , k t ó r y w y p o s a |o n o w m e c h a n i z m d z i e d z i c z e n i a m n o g i e g o ( n p . C + + ) k l a s a S e a P l a n e
m i a Ba b y d w i e s u p e r k l a s y : P l a n e i B o a t , j a k p o k a z a n o w c z [c i a ) r y s u n k u 1 - 3 .
J a v a 9
a ) b )
V e h i c l e V e h i c l e
P l a n e B o a t
P l a n e B o a t S e a P l a n e
i n t e r f a c e
S e a P l a n e
B o a t L i k e
i n t e r f a c e
P l a n e L i k e
R y s . 1 - 3 . a ) G r a f d z i e d z i c z e n i a m n o g i e g o d l a S e a P l a n e .
b ) G r a f d z i e d z i c z e n i a p o j e d y n c z e g o d l a S e a P l a n e
W j z y k u J a v a p o d o b n y e f e k t m o |n a o s i g n p o p r z e z i m p l e m e n t a c j w k l a s i e S e a P l a n e o b u
i n t e r f e j s ó w , t . j . P l a n e L i k e i B o a t L i k e ( c z [ b r y s u n k u 4 - 3 ) :
c l a s s S e a P l a n e e x t e n d s V e h i c l e i m p l e m e n t s
P l a n e L i k e , B o a t l i k e {
/ * * S e a P l a n e m u s t i m p l e m e n t k m p h ( ) , t a k e O f f ( ) ,
k n o t s ( ) , s w i m ( ) * /
}
D l a o s i g n i c i a p o |d a n e g o z a c h o w a n i a s i o b i e k t ó w k l a s y S e a P l a n e m o g l i b y [m y u m i e [c i w
g Bó w n y m m o d u l e zr ó d Bo w y m M u l t i 1 . j a v a n a s t p u j c y k o d :
p u b l i c c l a s s M u l t i 1 {
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] )
{
B o a t v e s s e l = n e w B o a t ( ) ;
P l a n e b i p l a n e = n e w P l a n e ( ) ;
S y s t e m . o u t . p r i n t l n ( " L e t ' s s t a r t i n g ! " ) ;
P l a n e L i k e r e f 1 = n e w S e a P l a n e ( b i p l a n e ) ;
r e f 1 . t a k e O f f ( ) ;
S y s t e m . o u t . p r i n t l n ( r e f 1 . k m p h ( ) ) ;
B o a t L i k e r e f 2 = n e w S e a P l a n e ( v e s s e l ) ;
r e f 2 . s w i m ( ) ;
S y s t e m . o u t . p r i n t l n ( r e f 2 . k n o t s ( ) ) ;
}
}
J e d n a k z e w z g l d u n a w i e l o k r o t n u |y w a l n o [ k o d u l e p s z y m r o z w i z a n i e m b d z i e t a k a d e f i n i c j a
k l a s y S e a P l a n e , k t ó r a w y k o r z y s t u j e m e c h a n i z m d e l e g a c j i , t j . b e z p o [r e d n i e j w s p ó Bp r a c y z k l a s a m i
P l a n e i B o a t :
c l a s s S e a P l a n e e x t e n d s V e h i c l e i m p l e m e n t s
P l a n e L i k e , B o a t L i k e {
/ / d e f i n e a P l a n e a n d B o a t i n s t a n c e v a r i a b l e s
/ / i . e . c o l l a b o r a t e w i t h P l a n e a n d B o a t c l a s s e s
p r i v a t e P l a n e i t A s P l a n e ;
p r i v a t e B o a t i t A s B o a t ;
/ / K o n s t r u k t o r
S e a P l a n e ( P l a n e i t A s P l a n e )
{
t h i s . i t A s P l a n e = i t A s P l a n e ;
}
/ / K o n s t r u k t o r
1 0 J z y k i o b i e k t o w e
S e a P l a n e ( B o a t i t A s B o a t )
{
t h i s . i t A s B o a t = i t A s B o a t ;
}
/ / f o r w a r d t h e m e s s a g e s t o t h e a p p r o p r i a t e c o l l a b o r a t o r
p u b l i c f l o a t k m p h ( ) { r e t u r n i t A s P l a n e . k m p h ( ) ; }
p u b l i c v o i d t a k e O f f ( ) { i t A s P l a n e . t a k e O f f ( ) ; }
p u b l i c f l o a t k n o t s ( ) { r e t u r n i t A s B o a t . k n o t s ( ) ; }
p u b l i c v o i d s w i m ( ) { i t A s B o a t . s w i m ( ) ; }
}
I n t e r f e j s n i e m o |e d z i e d z i c z y k l a s , a l e m o |e d z i e d z i c z y d o w o l n i e w i e l e i n t e r f e j s ó w . N p . k o r z y s t a j c
z p o d a n y c h w y |e j d e f i n i c j i m o g l i b y [m y u t w o r z y i n t e r f e j s
i n t e r f a c e S e a P l a n e L i k e e x t e n d s P l a n e L i k e , B o a t L i k e {
p u b l i c l o n g S P E E D _ L I M I T = 1 0 0 0 ;
}
i w y k o r z y s t a g o w k l a s i e S e a P l a n e , i m p l e m e n t u j c m e t o d y z a d e k l a r o w a n e w i n t e r f e j s a c h P l a n e L i k e i
B o a t L i k e .
1 . 4 . P l i k i zr ó d Bo w e i p a k i e t y
P r o g r a m j z y k a J a v a m o |e s i s k Ba d a z w i e l u n i e z a l e |n i e k o m p i l o w a l n y c h m o d u Bó w zr ó d Bo w y c h , w
k t ó r y c h u m i e s z c z a s i d e f i n i c j e k l a s o r a z i n t e r f e j s ó w . M o d u By zr ó d Bo w e s p r z e c h o w y w a n e w p l i k a c h
o n a z w i e N a z w a . j a v a , g d z i e N a z w a j e s t n a z w k l a s y p u b l i c z n e j ; p l i k i t e s t a n o w i j e d n o s t k i
k o m p i l a c j i . J e |e l i w p l i k u N a z w a . j a v a z d e f i n i o w a n o t y l k o j e d n k l a s , t o w w y n i k u k o m p i l a c j i t e g o
p l i k u p o w s t a j e p l i k w y n i k o w y N a z w a . c l a s s . J e |e l i p r o g r a m j e s t a p l i k a c j , t o w z e s t a w i e m o d u Bó w
zr ó d Bo w y c h m u s i s i z n a l e z d o k Ba d n i e j e d e n m o d u B zr ó d Bo w y ( m o d u B g Bó w n y a p l i k a c j i ) z k l a s
p u b l i c z n , k t ó r a z a w i e r a p u b l i c z n i s t a t y c z n f u n k c j m a i n ( k a |d y i n n y m o d u B zr ó d Bo w y m o |e
z a w i e r a k l a s z f u n k c j m a i n , j e |e l i n i e j e s t t o k l a s a p u b l i c z n a ) .
M o d u B zr ó d Bo w y , w k t ó r y m d e f i n i c j e k l a s o r a z i n t e r f e j s ó w p o p r z e d z o n o d e k l a r a c j p a k i e t u o p o s t a c i
p a c k a g e n a z w a _ p a k i e t u ; s t a j e s i p a k i e t e m . D e k l a r a c j a p a k i e t u r o z s z e r z a p r z e s t r z e D n a z w p r o g r a m u i
p o z w a l a n a l e p s z e z a r z d z a n i e p r o g r a m e m w i e l o m o d u Bo w y m . J e |e l i m o d u B zr ó d Bo w y n i e z a w i e r a
d e k l a r a c j i p a k i e t u , t o n a l e |y o n d o t z w . p a k i e t u d o m y [l n e g o ( p a k i e t u b e z n a z w y ) . N p . z a d e k l a r o w a n a
w c z e [n i e j k l a s a H e l l o , u m i e s z c z o n a w p l i k u H e l l o . j a v a n a l e |y d o p a k i e t u d o m y [l n e g o .
P a k i e t y s [c i [l e p o w i z a n e z k a t a l o g a m i , w k t ó r y c h u m i e s z c z a s i m o d u By zr ó d Bo w e i p l i k i
w y n i k o w e . Z a Bó |m y n p . , |e w k a t a l o g u c : \ m i k e ( W i n 9 5 D O S ) u m i e s z c z o n o g Bó w n y p l i k zr ó d Bo w y
a p l i k a c j i S t u d e n t . j a v a o p o s t a c i :
i m p o r t m y p r o g . p a k i e t 1 . H i G r a d e ;
i m p o r t m y p r o g . p a k i e t 1 . L o G r a d e ;
P o w y |s z e d w i e d e k l a r a c j e i m p o r t u m o |n a z a s t a p i j e d n :
i m p o r t m y p r o g . p a k i e t 1 . *
p u b l i c
c l a s s S t u d e n t {
i n t i = 1 0 ;
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] )
{
S y s t e m . o u t . p r i n t l n ( " H e l l o , I a m h e r e ! " ) ;
H i G r a d e h i g h g r a d e = n e w H i G r a d e ( ) ;
h i g h g r a d e . p r i n t g r a d e ( ) ;
L o G r a d e l o w g r a d e = n e w L o G r a d e ( ) ;
l o w g r a d e . p r i n t g r a d e ( ) ;
}
}
P l i k z a w i e r a d e f i n i c j k l a s y S t u d e n t , p o p r z e d z o n d e k l a r a c j i m p o r t u k l a s H i G r a d e i L o G r a d e . P l i k
t e n m o |e z o s t a s k o m p i l o w a n y w y w o Ba n i e m k o m p i l a t o r a j a v a c z k a t a l o g u n a d r z d n e g o w s t o s u n k u
d o k a t a l o g u m i k e \ m y p r o g \ p a k i e t 1 ; j e |e l i p l i k S t u d e n t . j a v a u m i e s z c z o n o w k a t a l o g u m i k e , t o
w y w o Ba n i e b d z i e m i a Bo p o s t a : j a v a c S t u d e n t . j a v a . J e |e l i p l i k i H i G r a d e . j a v a i L o G r a d e . j a v a
m a j p o s t a :
J a v a 1 1
p a c k a g e m y p r o g . p a k i e t 1 ;
p u b l i c c l a s s H i G r a d e {
i n t i = 1 0 ;
p u b l i c v o i d p r i n t g r a d e ( )
{
S y s t e m . o u t . p r i n t l n ( " M y g r a d e s a r e h i g h e r t h a n " + i ) ;
}
}
c l a s s E m p t y { }
o r a z
p a c k a g e m y p r o g . p a k i e t 1 ;
p u b l i c c l a s s L o G r a d e {
i n t i = 3 ;
p u b l i c v o i d p r i n t g r a d e ( )
{
S y s t e m . o u t . p r i n t l n ( " M y g r a d e s a r e l o w e r t h a n " + i ) ;
}
}
t o z o s t a n u t w o r z o n e c z t e r y p l i k i w y n i k o w e : S t u d e n t . c l a s s w k a t a l o g u j a v a p r o g o r a z H i G r a d e . c l a s s ,
L o G r a d e . c l a s s i E m p t y . c l a s s , a w y w o Ba n i e i n t e r p r e t a t o r a j a v a S t u d e n t s p o w o d u j e w y p r o w a d z e n i e
n a e k r a n n a p i s u :
H e l l o , I a m h e r e !
M y g r a d e s a r e h i g h e r t h a n 1 0
M y g r a d e s a r e l o w e r t h a n 3
U w a g a . D e k l a r a c j a i m p o r t u n i e o z n a c z a w Bc z a n i a d o p l i k u S t u d e n t . j a v a t e k s t u z a w a r t e g o w
p l i k a c h H i G r a d e . j a v a i L o G r a d e . j a v a . N a t o m i a s t p o z w a l a o n a u |y t k o w n i k o w i k l a s y S t u d e n t u |y w a
s k r ó t o w y c h n a z w : n p . z a m i a s t p i s a m y p r o g \ p a k i e t 1 \ H i G r a d e h i g h g r a d e = n e w
m i k e \ m y p r o g \ p a k i e t 1 \ H i G r a d e ( ) ; m o g l i [m y n a p i s a k r ó t k o : H i G r a d e h i g h g r a d e = n e w H i G r a d e ( ) ; .
G d y b y [m y c h c i e l i u |y w a r ó w n i e | k l a s y E m p t y ( l u b i n n y c h k l a s p a k i e t u p a k i e t 1 ) , t o d e k l a r a c j a
i m p o r t u m i a Ba b y p o s t a : i m p o r t m i k e . m y p r o g . p a k i e t 1 . * . W j z y k u J a v a w a |n a j e s t t a k |e k o l e j n o [
d e k l a r a c j i : n a j p i e r w d e k l a r a c j a p a k i e t u , p o n i e j d e k l a r a c j e i m p o r t u , p o c z y m d e f i n i c j e k l a s .
Z a u w a |m y , |e g d y b y u m i e [c i w p l i k u L o G r a d e . j a v a d e f i n i c j p a k i e t o w e j f u n k c j i w y s t p i e n i a , n a
p r z y k Ba d
v o i d m s g ( ) { S y s t e m . o u t . p r i n t ( " T h i s i s a p a c k a g e m e t h o d \ n " ) ; }
t o f u n k c j t m o |n a b y Bo b y w y w o Ba z c i a Ba k l a s y H i G r a d e , n a p r z y k Ba d w f u n k c j i p f :
p u b l i c v o i d p f ( ) {
L o G r a d e l g = n e w L o G r a d e ( ) ;
l g . m s g ( ) ;
}
F u k c j a p f j e s t p u b l i c z n a , z a t e m j e s t d o s t p n a n i e t y l k o d l a k l a s p a k i e t u m y p r o g . p a k i e t 1 , l e c z t a k |e
p o z a t y m p a k i e t e m . Z f u n k c j i m a i n k l a s y S t u d e n t m o |n a j , p r z y k Ba d o w o , w y w o Ba p o l e c e n i e m :
h i g h g r a d e . p f ( ) ; .
Z a u w a |m y t e |, |e d e k l a r u j c m s g j a k o f u n k c j k l a s y L o G r a d e
s t a t i c v o i d m s g ( ) { S y s t e m . o u t . p r i n t ( " T h i s i s a p a c k a g e m e t h o d \ n " ) ; }
m o g l i b y [m y j w y w o Ba z c i a Ba k l a s y H i G r a d e b e z t w o r z e n i a r e f e r e n c j i d o o b i e k t u k l a s y L o G r a d e , n p .
p u b l i c v o i d p f ( ) { L o G r a d e . m s g ( ) ; }
1 . 5 . P o l i m o r f i z m
P o l i m o r f i z m m o |e m y o k r e [l i j a k o w i r t u a l i z a c j o p e r a c j i ; j e s t t o m o |l i w o [ d y n a m i c z n e g o ( p ó zn e g o ,
r e a l i z o w a n e g o w f a z i e w y k o n a n i a ) w i z a n i a n a z w y o p e r a c j i d o w i e l u i m p l e m e n t a c j i ( m e t o d ) t e j
o p e r a c j i w r ó |n y c h k l a s a c h p o z o s t a j c y c h w r e l a c j i d z i e d z i c z e n i a . W i z a n i u t o w a r z y s z y m e c h a n i z m
w y b o r u k o n k r e t n e j i m p l e m e n t a c j i . W y b ó r i m p l e m e n t a c j i z a l e |y o d n a z w y m e t o d y o r a z o d t y p u
d y n a m i c z n e g o t e g o o b i e k t u , d l a k t ó r e g o z o s t a Ba w y w o Ba n a o p e r a c j a , a n i e o d t y p u z m i e n n e j ,
w s k a z u j c e j t e n o b i e k t .
1 2 J z y k i o b i e k t o w e
Z a u w a |m y , |e p r z e c i |a n i e o p e r a c j i n i e p r o w a d z i d o p o l i m o r f i z m u ; w t y m p r z y p a d k u w i z a n i e ,
d o p a s o w a n i e p a r a m e t r ó w w y w o Ba n i a o p e r a c j i d o o k r e [l o n e j s y g n a t u r y i w y b ó r i m p l e m e n t a c j i s
s t a t y c z n e , p o n i e w a | s w y k o n y w a n e w f a z i e k o m p i l a c j i . M u s z w ó w c z a s i s t n i e r ó |n i c e w
s y g n a t u r a c h o p e r a c j i ( w t y p i e w y n i k u i / l u b w t y p a c h p a r a m e t r ó w w e j [c i o w y c h ) , a k r y t e r i u m w y b o r u
i m p l e m e n t a c j i z a l e |y o d t y c h r ó |n i c .
W j z y k u J a v a w s z y s t k i e d e k l a r a c j e m e t o d , k t ó r e n i e s m e t o d a m i k l a s y , a n i m e t o d a m i f i n a l n y m i ,
m o |n a t r a k t o w a j a k o o p e r a c j e w i r t u a l n e . T a k w i c d e f i n i c j a m e t o d y o d a n e j s y g n a t u r z e w s u p e r k l a s i e
m o |e b y p r z e s Bo n i t a p r z e z d e f i n i c j m e t o d y o t e j s a m e j s y g n a t u r z e w p o d k l a s i e . W r e z u l t a c i e
k o m p i l a t o r n i e m o |e z w i z a n a z w y m e t o d y z j e j i m p l e m e n t a c j ( i s t n i e j c o n a j m n i e j d w i e
i m p l e m e n t a c j e o t a k i c h s a m y c h s y g n a t u r a c h ) . W i z a n i e m o |e s i o d b y d o p i e r o w f a z i e w y k o n a n i a ;
w ó w c z a s i n t e r p r e t a t o r o k r e [l a t y p d y n a m i c z n y o b i e k t u n a k t ó r y m z o s t a j e w y w o Ba n a o p e r a c j a i w i |e
t o p e r a c j z w Ba [c i w d l a d a n e g o o b i e k t u i m p l e m e n t a c j . I l u s t r a c j w y w o Ba n i a p o l i m o r f i c z n e g o
p o k a z u j e p o n i |s z y p r o s t y p r z y k Ba d .
/ / P l i k P o l i m o r f . j a v a
c l a s s B a s e {
p u b l i c v o i d m s g ( )
{
S y s t e m . o u t . p r i n t l n ( " B a s e c l a s s m e t h o d " ) ;
}
}
c l a s s D e r i v e d e x t e n d s B a s e {
p u b l i c v o i d m s g ( )
{
S y s t e m . o u t . p r i n t l n ( " D e r i v e d c l a s s m e t h o d " ) ;
}
}
p u b l i c c l a s s P o l i m o r f {
i n t i = 1 0 ;
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] )
{
B a s e b 1 = n e w B a s e ( ) ;
b 1 . m s g ( ) ;
b 1 = n e w D e r i v e d ( ) ;
i f ( b 1 i n s t a n c e o f D e r i v e d )
S y s t e m . o u t . p r i n t l n ( " D e r i v e d " ) ;
b 1 . m s g ( ) ;
}
}
M e t o d a m s g ( ) m a d w i e i m p l e m e n t a c j e : w k l a s i e B a s e i w k l a s i e D e r i v e d . O d n o [n i k ( r e f e r e n c j a )
b 1 d o k l a s y B a s e j e s t n a j p i e r w i n i c j o w a n a o b i e k t e m k l a s y B a s e , a w i c i n s t r u k c j a b 1 . m s g ( ) ;
w y w o Ba m e t o d t e j k l a s y . N a s t p n i e o d n o [n i k o w i b 1 z o s t a j e p r z y p i s a n y o b i e k t k l a s y D e r i v e d , c o
s p o w o d u j e , |e n a s t p n a i n s t r u k c j a b 1 . m s g ( ) ; w y w o Ba i m p l e m e n t a c j m e t o d y m s g ( ) z d e f i n i o w a n
w k l a s i e D e r i v e d . I n s t r u k c j a i f w y k o r z y s t u j c a o p e r a t o r i n s t a n c e o f s Bu |y d o s p r a w d z e n i a , j a k i
j e s t t y p d y n a m i c z n y o b i e k t u b 1 . W y n i k i e m w y k o n a n i a p r o g r a m u b d z i e n a s t p u j c y w y d r u k :
B a s e c l a s s m e t h o d
D e r i v e d
D e r i v e d c l a s s m e t h o d
1 . 5 . K l a s y z a g n i e |d |o n e
K l a s y , j a k j u | p o w i e d z i a n o , m o g n a l e |e d o p a k i e t ó w n a z w a n y c h l u b n i e n a z w a n y c h . P o c z w s z y o d
w e r s j i 1 . 1 j z y k a J a v a w p r o w a d z o n o m o |l i w o [ d e f i n i o w a n i a k l a s w e w n t r z n y c h ( i n n e r c l a s s e s ) j a k o
e l e m e n t ó w s k Ba d o w y c h i n n y c h k l a s ; m o |n a j e d e f i n i o w a a l b o l o k a l n i e w e w n t r z c i a Ba k l a s y
z e w n t r z n e j , a l b o ( a n o n i m o w o ) j a k o w y r a |e n i e w b l o k u . T a k i e z a g n i e |d |o n e k l a s y p o s i a d a j k i l k a
w Ba s n o [c i , k t ó r e c z y n i j e u |y t e c z n y m i :
" N a z w y k l a s y w e w n t r z n e j n i e m o |n a u |y n a z e w n t r z j e j z a s i g u , z a w y j t k i e m n a z w y
k w a l i f i k o w a n e j . P o m a g a t o w s t r u k t u r a l i z a c j i k l a s w o b r b i e p a k i e t u .
J a v a 1 3
" K o d k l a s y w e w n t r z n e j m o |e w y k o r z y s t y w a p r o s t e n a z w y z z a s i g ó w o t a c z a j c y c h , w t y m
z a r ó w n o s k Ba d o w e k l a s y , j a k i s k Ba d o w e w y s t p i e n i a k l a s o t a c z a j c y c h o r a z z m i e n n e l o k a l n e
o t a c z a j c y c h b l o k ó w .
K l a s y w e w n t r z n e s e l e m e n t a m i k o m b i n a c j i s t r u k t u r y b l o k o w e j i p r o g r a m o w a n i a o p a r t e g o o k l a s y ;
w p r o w a d z o n o j e p o r a z p i e r w s z y w j z y k u B e t a . W y k o r z y s t a n i e s t r u k t u r y b l o k o w e j o r a z k l a s
w e w n t r z n y c h u Ba t w i a p r o g r a m i [c i e w i z a z e s o b o b i e k t y J a v y , p o n i e w a | k l a s y m o g b y
d e f i n i o w a n e w p o b l i |u o b i e k t ó w , k t ó r y m i m a n i p u l u j , i m o g b e z p o [r e d n i o u |y w a n a z w , k t ó r y c h
p o t r z e b u j . P o n a d t o p r o g r a m i s t a m o |e d e f i n i o w a k l a s w e w n t r z n j a k o s t a t y c z n y e l e m e n t d o w o l n e j
k l a s y o t a c z a j c e j . J e d n a k k l a s a w e w n t r z n a n i e m o |e d e k l a r o w a |a d n e j z e s w o i c h s k Ba d o w y c h z e
s Bo w e m k l u c z o w y m s t a t i c , p o n i e w a | c i a Bo k l a s y w e w n t r z n e j j e s t w z a s i g u k l a s y o t a c z a j c e j . W
r e z u l t a c i e z m i e n n e s t a t y c z n e d l a k l a s y w e w n t r z n e j m u s z b y u m i e s z c z a n e w k l a s i e o t a c z a j c e j . Z
t e g o s a m e g o p o w o d u n i e m o |n a w k l a s i e w e w n t r z n e j d e k l a r o w a s t a t y c z n y c h i n i c j a t o r ó w d l a p ó l
k l a s y .
K l a s y z e w n t r z n e o r a z s t a t y c z n e k l a s y w e w n t r z n e n a z y w a s i k l a s a m i w y s o k i e g o p o z i o m u . R ó |n i
s i o n e o d n i e s t a t y c z n y c h k l a s w e w n t r z n y c h t y m , |e m o g u |y w a b e z p o [r e d n i o j e d y n i e s w o j e
w Ba s n e z m i e n n e w y s t p i e n i a .
J e |e l i k l a s a w e w n t r z n a p o s i a d a n a z w , m o |e b y d e k l a r o w a n a z e s Bo w a m i k l u c z o w y m i p r i v a t e ,
p r o t e c t e d , f i n a l , l u b a b s t r a c t . N a t o m i a s t k l a s y a n o n i m o w e s p r y w a t n e w b l o k u , w k t ó r y m s
z a d e k l a r o w a n e , p o n i e w a | n i e m o g b y w y k o r z y s t a n e n a z e w n t r z t e g o b l o k u .
Z a g n i e |d |a n i e k l a s w t e n w Ba [n i e s p o s ó b p o z w a l a d o w o l n e j k l a s i e w y s o k i e g o p o z i o m u d l a l o g i c z n i e
p o w i z a n y c h k l a s p o z i o m u n i |s z e g o u z y s k a p o d o b n d o p a k i e t u o r g a n i z a c j , w k t ó r e j w s z y s t k i e
k l a s y m a j p e Bn y d o s t p d o p ó l p r y w a t n y c h .
W p o d a n y m n i |e j p r z y k Ba d z i e k l a s a w e w n t r z n a z o s t a Ba z a d e k l a r o w a n a j a k o k l a s a n i e s t a t y c z n a
I n n e r z w Ba s n y m k o n s t r u k t o r e m i w Ba s n z m i e n n s k Ba d o w y .
/ / P l i k O u t e r 1 . j a v a
p u b l i c c l a s s O u t e r 1 {
p u b l i c i n t x ;
p u b l i c O u t e r 1 ( i n t i ) { x = i ; }
c l a s s I n n e r {
p u b l i c i n t y ;
p u b l i c I n n e r ( S t r i n g s , i n t j ) {
y = j ;
S y s t e m . o u t . p r i n t l n ( s + j ) ;
} ;
} / / e n d I n n e r
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
O u t e r 1 r e f 1 = n e w O u t e r 1 ( 1 0 ) ;
S y s t e m . o u t . p r i n t l n ( " r e f 1 . x = " + r e f 1 . x ) ;
O u t e r 1 . I n n e r r e f 2 = r e f 1 . n e w I n n e r ( " r e f 2 . y = " , 2 0 ) ;
S y s t e m . o u t . p r i n t l n ( " r e f 2 . y = " + r e f 2 . y ) ;
}
} / / e n d O u t e r 1
W p r o w a d z e n i e k l a s z a g n i e |d |o n y c h n i e s p o w o d o w a Bo z m i a n w p r z e t w a r z a n i u p l i k ó w z B - k o d e m
p r z e z m a s z y n w i r t u a l n J a v y , t j . p r z e z i n t e r p r e t a t o r , a n i w s t a n d a r d o w y c h b i b l i o t e k a c h k l a s , a n o w a
c e c h a j z y k a z o s t a Ba u w z g l d n i o n a w n o w y c h w e r s j a c h k o m p i l a t o r ó w . U w z g l d n i o n o j w t e n s p o s ó b ,
|e n a z w y k l a s w e w n t r z n y c h s p r z e k s z t a Bc a n e t a k , a b y u n i k n k o n f l i k t ó w z i n n y m i n a z w a m i w
r ó |n y c h z a s i g a c h . N a z w y s k o d o w a n e p r z e z k o m p i l a t o r , k t ó r y b i e r z e i c h p o s t a zr ó d Bo w ,
k w a l i f i k u j e j e k r o p k a m i , p o c z y m z m i e n i a k a |d k r o p k p o n a z w i e k l a s y n a z n a k d o l a r a ( $ ) . T a k
w i c p o k o m p i l a c j i p l i k u zr ó d Bo w e g o O u t e r 1 . j a v a o t r z y m a m y d w a p l i k i z B - k o d e m : O u t e r 1 . c l a s s
o r a z O u t e r 1 $ I n n e r . c l a s s . O c z y w i [c i e i n t e r p r e t a c j i p o d d a m y p l i k O u t e r 1 . c l a s s .
N i e s t a t y c z n k l a s w e w n t r z n w y k o r z y s t u j e s i w t e d y , g d y t w o r z o n y j e s t o b i e k t k l a s y z e w n t r z n e j ;
j a k p o k a z a n o w y |e j , a r g u m e n t e m o p e r a t o r a n e w j e s t j e s t k o n s t r u k t o r k l a s y w e w n t r z n e j , w y w o By w a n y
n a o d n o [n i k u d o o b i e k t u k l a s y z e w n t r z n e j .
N a s t p n y p r z y k Ba d i l u s t r u j e d e k l a r a c j s t a t y c z n e j k l a s y w e w n t r z n e j :
1 4 J z y k i o b i e k t o w e
/ / p l i k O u t e r 2 . j a v a
p u b l i c c l a s s O u t e r 2 {
p u b l i c i n t x ;
p u b l i c O u t e r 2 ( i n t i ) { x = i ; }
s t a t i c c l a s s I n n e r {
p u b l i c i n t y ;
p u b l i c I n n e r ( i n t j ) { y = j ; } ;
} / / e n d I n n e r
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
O u t e r 2 r e f 1 = n e w O u t e r 2 ( 1 0 ) ;
S y s t e m . o u t . p r i n t l n ( " r e f 1 . x = " + r e f 1 . x ) ;
O u t e r 2 . I n n e r r e f 2 = n e w O u t e r 2 . I n n e r ( 2 0 ) ;
S y s t e m . o u t . p r i n t l n ( " r e f 2 . y = " + r e f 2 . y ) ;
}
} / / e n d O u t e r 2
W t y m p r z y p a d k u a r g u m e n t e m o p e r a t o r a n e w j e s t j e s t k o n s t r u k t o r k l a s y w e w n t r z n e j , w y w o By w a n y
n a s k Ba d o w e j s t a t y c z n e j ( O u t e r 2 . I n n e r ) k l a s y z e w n t r z n e j . K o m p i l a t o r , p o d o b n i e j a k w
p o p r z e d n i m p r z y k Ba d z i e , u t w o r z y d w a p l i k i z B - k o d e m : O u t e r 2 . c l a s s o r a z O u t e r 2 $ I n n e r . c l a s s .
J e |e l i n i e m a p o t r z e b y t w o r z e n i a o b i e k t u k l a s y z e w n t r z n e j , w ó w c z a s z a r ó w n o k l a s w e w n t r z n , j a k
i f u n k c j e s k Ba d o w e k l a s y z e w n t r z n e j m o |n a z a d e k l a r o w a j a k o s t a t y c z n e . K o n s t r u k c j e t e g o t y p u
w y k o r z y s t y w a n e s w J a v i e p r a w i e w s z d z i e t a m , g d z i e k l a s a w e w n t r z n a i m p l e m e n t u j e i n t e r f e j s .
I l u s t r a c j t e g o s t w i e r d z e n i a j e s t k o l e j n y p r z y k Ba d .
/ / P l i k O u t e r 3 . j a v a
i n t e r f a c e I n n e r I n t {
S t r i n g w y s w i e t l ( ) ;
} / / e n d o f I n n e r I n t i n t e r f a c e
p u b l i c c l a s s O u t e r 3 {
p u b l i c s t a t i c i n t x = 1 0 ;
s t a t i c c l a s s I n n e r i m p l e m e n t s I n n e r I n t {
p r i v a t e i n t y ;
p u b l i c I n n e r ( i n t j ) {
y = j ;
S y s t e m . o u t . p r i n t l n ( w y s w i e t l ( ) ) ;
} / / e n d o f c t o r
p u b l i c S t r i n g w y s w i e t l ( ) {
r e t u r n ( n e w S t r i n g ( " I n n e r . y = " + y ) ) ;
}
} / / e n d I n n e r
p u b l i c s t a t i c I n n e r I n t f o o ( i n t i ) {
r e t u r n ( n e w I n n e r ( i ) ) ;
}
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
S y s t e m . o u t . p r i n t l n ( " O u t e r 3 . x = " + O u t e r 3 . x ) ;
O u t e r 3 . f o o ( 2 0 ) ;
}
} / / k o n i e c p u b l i c c l a s s O u t e r 3
W b l o k u m a i n p u b l i c z n a , s t a t y c z n a f u n k c j a f o o ( ) k l a s y z e w n t r z n e j , w y w o By w a n a z a r g u m e n t e m
2 0 , z w r a c a o d n o [n i k t y p u i n t e r f e j s o w e g o I n n e r I n t , i n i c j o w a n y o d n o [n i k i e m d o t w o r z o n e g o w
i n s t r u k c j i r e t u r n o b i e k t u k l a s y I n n e r . M o g l i [m y t a k u c z y n i , p o n i e w a | k l a s a I n n e r j e s t n i e
t y l k o o d r b n y m t y p e m , l e c z t a k |e i m p l e m e n t u j e t y p I n n e r I n t . W r e z u l t a c i e k o m p i l a t o r u t w o r z y
t r z y p l i k i z B - k o d e m : O u t e r 3 . c l a s s , O u t e r 3 $ I n n e r . c l a s s o r a z I n n e r I n t . c l a s s .
J a v a 1 5
P o n i e w a | t y p I n n e r j e s t w y k o r z y s t y w a n y w d e f i n i c j i k l a s y z e w n t r z n e j t y l k o j e d e n r a z , m o |n a , d l a
u z y s k a n i a b a r d z i e j z w i z Be g o k o d u , z r e z y g n o w a z w p r o w a d z a n i a j e g o n a z w y d o p r z e s t r z e n i n a z w
p r o g r a m u , a i m p l e m e n t a c j i n t e r f e j s u I n n e r I n t u m i e [c i b e z p o [r e d n i o w w y r a |e n i u n e w i n s t r u k c j i
p o w r o t u z f u n k c j i f o o ( ) . K o n s t r u k c j a t a k a , b d c i m p l e m e n t a c j i n t e r f e j s u , j e s t o c z y w i [c i e k l a s ;
p o n i e w a | j e d n a k n i e w y s t p u j e t u t a j n a z w a k l a s y , n a z y w a m y j k l a s a n o n i m o w . P o n i |e j
z a p r e z e n t o w a n o o d p o w i e d n i k o d , w k t ó r y m b l o k , z a c z y n a j c y s i n a w i a s e m k l a m r o w y m p o
I n n e r I n t ( ) j e s t c i a Be m k l a s y a n o n i m o w e j , f a k t y c z n i e i d e n t y c z n y m z c i a Be m k l a s y I n n e r z
p o p r z e d n i e g o p r z y k Ba d u .
/ / p l i k O u t e r 4 . j a v a
i n t e r f a c e I n n e r I n t {
S t r i n g B u f f e r w y s w i e t l ( ) ;
} / / e n d I n n e r I n t
p u b l i c c l a s s O u t e r 4 {
p u b l i c s t a t i c i n t x = 1 0 ;
p u b l i c s t a t i c I n n e r I n t f o o ( f i n a l i n t i ) {
r e t u r n n e w I n n e r I n t ( ) {
p r i v a t e i n t y = i ;
p u b l i c S t r i n g B u f f e r w y s w i e t l ( ) {
r e t u r n ( n e w S t r i n g B u f f e r ( " O u t e r 4 . f o o ( 2 0 ) . w y s w i e t l ( ) = " + y ) ) ;
} / / e n d w y s w i e t l ( )
} ; / / e n d a n o n y m o u s
} / / e n d f o o
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
S y s t e m . o u t . p r i n t l n ( " O u t e r 4 . x = " + O u t e r 4 . x ) ;
S y s t e m . o u t . p r i n t l n ( O u t e r 4 . f o o ( 2 0 ) . w y s w i e t l ( ) ) ;
} / / e n d m a i n ( )
} / / e n d O u t e r 4
Z w r ó m y u w a g n a o s t a t n i i n s t r u k c j w f u n k c j i m a i n ( ) . A r g u m e n t m e t o d y p r i n t l n ( ) j e s t w y r a |e n i e m
o t r z y m a n y m w w y n i k u w y w o Ba n i a n a k l a s i e O u t e r 4 f u n k c j i f o o ( ) , k t ó r a z w r a c a o b i e k t t y p u I n n e r I n t .
N a o b i e k c i e t y m j e s t w y w o By w a n a f u n k c j a w y s w i e t l ( ) , k t ó r a z w r a c a w y n i k t y p u
S t r i n g B u f f e r , a w i c t y p u a k c e p t o w a n e g o p r z e z m e t o d p r i n t l n ( ) .
Z d e f i n i o w a n a t u t a j k l a s a a n o n i m o w a m a n a s t p u j c e w Ba s n o [c i :
" M o |e m i e i n i c j a t o r y p ó l , a l e n i e m o |e m i e k o n s t r u k t o r a .
" J e |e l i k l a s a a n o n i m o w a z o s t a Ba w y p r o w a d z o n a z i n t e r f e j s u I , t o f a k t y c z n j e j s u p e r k l a s j e s t
O b j e c t , a k l a s a t y l k o i m p l e m e n t u j e i n t e r f e j s I , b e z |a d n y c h r o z s z e r z e D.
P r z e k s z t a Bc a n i e n a z w p r z e z k o m p i l a t o r s p o w o d u j e t e r a z u t w o r z e n i e n a s t p u j c y c h p l i k ó w z B - k o d e m :
O u t e r 4 . c l a s s , O u t e r 4 $ 1 . c l a s s o r a z I n n e r I n t . c l a s s . P l i k O u t e r 4 $ 1 . c l a s s o d p o w i a d a k l a s i e
a n o n i m o w e j . W j e g o n a z w i e l i c z b a 1 ( n u m e r k l a s y a n o n i m o w e j ) z o s t a Ba d o d a n a p r z e z k o m p i l a t o r d l a
o t r z y m a n i a u n i k a t o w e j n a z w y , k t ó r a z o s t a n i e p r z e k a z a n a d o k o n s o l i d a t o r a .
I s t n i e n i e k l a s z a g n i e |d |o n y c h w y m a g a p e w n e j z m i a n y w n a z w a c h k w a l i f i k o w a n y c h p r z y
d e f i n i o w a n i u z m i e n n y c h t y p u k l a s y w e w n t r z n e j o r a z h i e r a r c h i i d z i e d z i c z e n i a . I s t o t n e z m i a n y t o :
I n i c j o w a n i e z m i e n n y c h o d n o [n i k o w y c h t y p u k l a s y w e w n t r z n e j s Bo w e m k l u c z o w y m t h i s ,
o d p o w i a d a j c y m b i e |c e m u o b i e k t o w i k l a s y z e w n t r z n e j .
K w a l i f i k o w a n i e d z i e d z i c z e n i a o d k l a s y w e w n t r z n e j j e j n a z w , u m i e s z c z a n p o n a z w i e k l a s y
z e w n t r z n e j i k r o p c e .
I l u s t r a c j t e g o s p o s o b u k w a l i f i k a c j i n a z w j e s t p o d a n y n i |e j p r z y k Ba d .
c l a s s V e h i c l e {
c l a s s W h e e l {
S t r i n g h u b c a p T y p e ;
f l o a t r a d i u s ;
} / / e n d c l a s s W h e e l
W h e e l l e f t W h e e l = t h i s . n e w W h e e l ( ) ;
1 6 J z y k i o b i e k t o w e
W h e e l r i g h t W h e e l = t h i s . n e w W h e e l ( ) ;
W h e e l e x t r a ;
s t a t i c v o i d t h i r d W h e e l ( V e h i c l e c a r ) {
i f ( c a r . e x t r a = = n u l l ) {
c a r . e x t r a = c a r . n e w W h e e l ( ) ;
} / / e n d i f
} / / e n d t h i r d W h e e l ( )
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) {
S y s t e m . o u t . p r i n t l n ( " V e h i c l e = " ) ;
} / / e n d m a i n ( )
} / / e n d c l a s s V e h i c l e
/ / K o Bo z e s z p r y c h a m i
c l a s s W i r e R i m W h e e l e x t e n d s V e h i c l e . W h e e l {
W i r e R i m W h e e l ( V e h i c l e c a r , f l o a t w i r e G a u g e ) {
c a r . s u p e r ( ) ;
} / / e n d o f c o n s t r u c t o r W i r e R i m W h e e l ( )
} / / e n d c l a s s W i r e R i m W h e e l
c l a s s A u t o e x t e n d s V e h i c l e { }
W w y n i k u k o m p i l a c j i z o s t a n u t w o r z o n e c z t e r y p l i k i z B - k o d e m : V e h i c l e . c l a s s ,
V e h i c l e $ W h e e l . c l a s s , W i r e R i m W h e e l . c l a s s o r a z A u t o . c l a s s .
1 . 6 . O b s Bu g a w y j t k ó w
W y j t k i p o z w a l a j z a c h o w a k o n t r o l n a d p r z e b i e g i e m w y k o n a n i a f u n k c j i ( m e t o d ) , a t a k |e
p o j e d y n c z y c h i n s t r u k c j i z a w a r t y c h w f u n k c j a c h . W y j t e k j e s t z d a r z e n i e m , k t ó r e p o j a w i a s i p o d c z a s
w y k o n a n i a i r o z r y w a n o r m a l n k o l e j n o [ w y k o n a n i a i n s t r u k c j i .
W j z y k u J a v a i s t n i e j e b a r d z o r o z b u d o w a n a h i e r a r c h i a ( d r z e w o ) p r e d e f i n i o w a n y c h k l a s w y j t k ó w ,
k t ó r y c h s u p e r k l a s j e s t k l a s a T h r o w a b l e , a g Bó w n y m i g a Bz i a m i d r z e w a s k l a s y E r r o r i E x c e p t i o n .
C z [ w y j t k ó w n a l e |y d o g r u p y t z w . w y j t k ó w w e r y f i k o w a l n y c h ( c h e c k e d e x c e p t i o n s ) : k o m p i l a t o r
s p r a w d z a , c z y p r o g r a m z a w i e r a p r o c e d u r y o b s Bu g i d l a k a |d e g o w y j t k u z t e j g r u p y . N a t o m i a s t w y j t k i
k l a s y E r r o r i j e j p o d k l a s n a l e | d o g r u p y w y j t k ó w n i e w e r y f i k o w a l n y c h ( u n c h e c k e d e x c e p t i o n s ) ,
p o n i e w a | m o g o n e w y s t p i w w i e l u p u n k t a c h p r o g r a m u i p o w r ó t z n i c h j e s t t r u d n y l u b w r c z
n i e m o |l i w y . D o g r u p y w y j t k ó w n i e w e r y f i k o w a l n y c h n a l e | t e | w y j t k i k l a s y R u n t i m e E x c e p t i o n
( p o d k l a s a E x c e p t i o n ) i j e j p o d k l a s , p o n i e w a | z a d e k l a r o w a n i e w p r o g r a m i e t a k i c h w y j t k ó w n i e
m o g Bo b y z n a c z n i e p o m ó c w u s t a l e n i u ( p r z e z k o m p i l a t o r ) p o p r a w n o [c i p r o g r a m ó w .
D l a o b s Bu g i w y j t k ó w w e r y f i k o w a l n y c h w p r o w a d z o n o c z t e r y s Bo w a k l u c z o w e : t h r o w , t h r o w s , t r y ,
c a t c h i f i n a l l y . S Bo w o k l u c z o w e t h r o w s Bu |y d o j a w n e g o z g Ba s z a n i a w y j t k ó w n i e w e r y f i k o w a l n y c h i
w y s t p u j e w i n s t r u k c j i t h r o w o s k Ba d n i t h r o w w y r a |e n i e ; g d z i e w y r a |e n i e m u s i o z n a c z a z m i e n n l u b
w a r t o [ t y p u r e f e r e n c y j n e g o d o k l a s y T h r o w a b l e l u b j e j p o d k l a s . Z g Bo s z e n i e w y j t k u w i n s t r u k c j i
t h r o w s p o w o d u j e n a t y c h m i a s t o w e o p u s z c z e n i e b l o k u l u b f u n k c j i z a w i e r a j c e g o i n s t r u k c j t h r o w i
z n a l e z i e n i e i n s t r u k c j i t r y , k t ó r e j f r a z a c a t c h p r z e c h w y c i z g Bo s z o n y w y j t e k . J e |e l i n i e m a t a k i e j
i n s t r u k c j i t r y , z o s t a n i e w y w o Ba n a m e t o d a U n c a u g h t E x c e p t i o n i w y k o n a n i e p r o g r a m u ( l u b w t k u )
z o s t a n i e z a k o Dc z o n e .
F r a z a : t h r o w s k l a s a _ w y j t k ó w
m o |e w y s t p i w n a g Bó w k u f u n k c j i ( m e t o d z i e w y s t p i e n i a , k o n s t r u k t o r z e , f u n k c j i k l a s y ) , n p .
p u b l i c s t a i c v o i d m a i n ( S t r i n g a r g s [ ] ) t h r o w s E x c e p t i o n { / * . . . * / }
v o i d p r i n t N u m b e r ( i n t n u m b e r ) t h r o w s W r o n g N u m b e r E x c e p t i o n { / * . . . * / }
F r a z a t h r o w s k l a s a _ w y j t k ó w o z n a c z a , |e d a n a f u n k c j a m o |e z g Ba s z a j e d y n i e w y j t k i p o d a n e j k l a s y .
J e |e l i w y k o n a n i e p e w n e j i n s t r u k c j i p r o g r a m u m o |e s p o w o d o w a p o w s t a n i e w y j t k o w e g o z d a r z e n i a ,
t o m u s i o n a b y u j t a w b l o k i n s t r u k c j i t r y , p o k t ó r y m m u s z w y s t p i p r o c e d u r y o b s Bu g i w y j t k u
m a j c e p o s t a f r a z y c a t c h i b e z p o [r e d n i o p o c a t c h ( o p c j o n a l n i e ) f r a z y f i n a l l y . S k Ba d n i a t e j k o n s t r u k c j i
m a p o s t a :
t r y { I } c a t c h ( a r g 1 e 1 ) { I } c a t c h ( a r g 2 e 2 ) { I } . . . c a t c h ( a r g n e n ) { I } . . . f i n a l l y { I }
g d z i e I o z n a c z a i n s t r u k c j e , a r g 1 . . a r g n k l a s y w y j t k ó w , e 1 . . . e n o d n o [n i k i d o t y c h k l a s .
B l o k c a t c h n a l e |y t r a k t o w a j a k o c i a Bo p r o c e d u r y o b s Bu g i w y j t k u n a l e |c e g o d o k l a s y a r g i .
J a v a 1 7
J e |e l i f u n k c j a / m e t o d a z a w i e r a i n s t r u k c j t r y , t o w y j t k i m o g b y z g Ba s z a n e w y Bc z n i e w b l o k u t r y . P o
z g Bo s z e n i u w y j t k u s t e r o w a n i e o p u s z c z a k o d , k t ó r y z g Bo s i B w y j t e k i p r z e c h o d z i d o p i e r w s z e j w
k o l e j n o [c i p r o c e d u r y c a t c h ; j e |e l i t a n i e o b s Bu g u j e w y j t k u z g Bo s z o n e j k l a s y , j e s t o n p r z e k a z y w a n y d o
n a s t p n e j . B l o k f r a z y f i n a l l y ( j e [l i w y s t p u j e ) j e s t w y k o n y w a n y z a w s z e g d y k o Dc z y s i w y k o n a n i e
i n s t r u k c j i t r y i t o n a w e t w t e d y , g d y w y k o n a n i e t r y z o s t a j e g w a Bt o w n i e p r z e r w a n e .
P r o s t y p r o g r a m , k t ó r y j e d y n i e i l u s t r u j e s k Ba d n i z g Ba s z a n i a i o b s Bu g i w y j t k ó w m o |e w y g l d a
n a s t p u j c o :
/ / p l i k T e s t E x . j a v a
i m p o r t j a v a . i o . * ;
p u b l i c c l a s s T e s t E x {
p u b l i c T e s t E x ( ) { }
f i n a l i n t C O N S T A N T = 1 0 ;
v o i d f f ( ) t h r o w s I O E x c e p t i o n
{
t r y
{
S y s t e m . o u t . p r i n t l n ( " I w a s h e r e , w i t h i n t r y s t a t e m e n t . " ) ;
i f ( C O N S T A N T > 0 )
t h r o w n e w I O E x c e p t i o n ( " C O N S T A N T s h o u l d b e n e g a t i v e " ) ;
}
c a t c h ( I O E x c e p t i o n e x c )
{
S y s t e m . e r r . p r i n t l n ( " C a u g h t I O E x c e p t i o n : " + e x c . g e t M e s s a g e ( ) ) ;
}
f i n a l l y
{
S y s t e m . o u t . p r i n t l n ( " A n d n o w I a m i n f i n a l l y b l o k " ) ;
}
} / / e n d f f
p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g s [ ] ) t h r o w s I O E x c e p t i o n
{
T e s t E x t e = n e w T e s t E x ( ) ;
t e . f f ( ) ;
} / / e n d m a i n
} / / e n d c l a s s T e s t E x
P o d a n y n i |e j p r z y k Ba d d e f i n i u j e k l a s L i s t O f N u m b e r s , w y w o Bu j c z p a k i e t ó w J a v y d w i e m e t o d y k l a s ,
k t ó r e m o g z g Bo s i w y j t k i .
i m p o r t j a v a . i o . * ;
i m p o r t j a v a . u t i l . V e c t o r ;
p u b l i c c l a s s L i s t O f N u m b e r s {
p r i v a t e V e c t o r v i c t o r ;
p r i v a t e s t a t i c f i n a l i n t s i z e = 1 0 ;
p u b l i c L i s t O f N u m b e r s ( ) {
v i c t o r = n e w V e c t o r ( s i z e ) ;
f o r ( i n t i = 0 ; i <