O O P w i t h J a v a Y u a n b i n Wu c s @e c n u
O O P w i t h J a v a ● 通知 – P 月 6 日晚 9 点 r o j e c t 6 : 6
● 复习 – 继承 ● 代码复用 ● 向上转换 , 多态 ( 父类与子类的类型转换 ) – 接口 ● 代码复用 ● 向上转换 , 多态 ( 多个父接口 ) – 内部类 ● 代码复用 ● 向上转换 , 多态 ( 灵活实现多继承 )
● 复习 – 内部类 p u b l i c c l a s s P a r c e l { c l a s s C o n t e n t s { ● 定义在一个类的内部 p r i v a t e i n t i = 1 1 ; p u b l i c i n t v a l u e ( ) { r e t u r n i ; } } c l a s s O u t e r { c l a s s D e s t i n a t i o n { … p r i v a t e S t r i n g l a b e l ; D e s t i n a t i o n ( S t r i n g r ) { l a b e l = r ; } c l a s s I n n e r { S t r i n g r e a d L a b e l ( ) { r e t u r n l a b e l ; } . . . } } p u b l i c D e s t i n a t i o n t o ( S t r i n g s ) { . . . r e t u r n n e w D e s t i n a t i o n ( s ) ; } } p u b l i c C o n t e n t s c o n t e n t s ( ) { r e t u r n n e w C o n t e n t s ( ) ; } p u b l i c v o i d s h i p ( S t r i n g d e s t ) { C o n t e n t s c = n e w C o n t e n t s ( ) ; D e s t i n a t i o n d = n e w D e s t i n a t i o n ( d e s t ) ; S y s t e m . o u t . p r i n t l n ( d . r e a d L a b 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 ) { P a r c e l p = n e w P a r c e l ( ) ; P a r c e l . D e s t i n a t i o n d = p . t o ( “ T a s m a n i a ” ) ; P a r c e l . C o n t e n t s c = p . c o n t e n t s ( ) ; } }
● 复习 – 内部类 ● 每个内部类对象包含的有一个外部类对象的引用 – O u t e r C l a s s N a m e . t h i s ● 创建内部类 – 在外部类的方法中 : 直接创建 – 在其他地方 : O u t e r C l a s s O b j e c t . n e w
p u b l i c c l a s s P a r c e l { c l a s s C o n t e n t s { p r i v a t e i n t i = 1 1 ; p u b l i c i n t v a l u e ( ) { r e t u r n i ; } } c l a s s D e s t i n a t i o n { p r i v a t e S t r i n g l a b e l ; D e s t i n a t i o n ( S t r i n g r ) { l a b e l = r ; } S t r i n g r e a d L a b e l ( ) { r e t u r n l a b e l ; } } p u b l i c D e s t i n a t i o n t o ( S t r i n g s ) { r e t u r n n e w D e s t i n a t i o n ( s ) ; } p u b l i c C o n t e n t s c o n t e n t s ( ) { r e t u r n n e w C o n t e n t s ( ) ; } 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 ) { P a r c e l p = n e w P a r c e l ( ) ; P a r c e l . D e s t i n a t i o n d = p . n e w D e s t i n a t i o n ( “ T ” ) ; P a r c e l . C o n t e n t s c = p . n e w C o n t e n t s ( ) ; } }
● 复习 – 匿名内部类 ● 没有名字的内部类 ● 必须继承某个类 , 或实现某个接口 p u b l i c c l a s s P a r c e l { p u b l i c c l a s s P a r c e l { c l a s s P C o n t e n t s i m p l e m e n t s C o n t e n t s { p u b l i c C o n t e n t s c o n t e n t s ( ) { p r i v a t e i n t i = 1 1 ; r e t u r n n e w C o n t e n t s ( ) { p u b l i c i n t v a l u e ( ) { r e t u r n i ; } / / a n o n y m o u s i n n e r c l a s s d e fi n i t i o n } p r i v a t e i n t i = 1 1 ; p u b l i c i n t v a l u e ( ) { r e t u r n i ; } p u b l i c C o n t e n t s c o n t e n t s ( ) { } ; r e t u r n n e w P C o n t e n t s ( ) ; } } 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 ) { 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 ) { P a r c e l p = n e w P a r c e l ( ) ; P a r c e l p = n e w P a r c e l ( ) ; C o n t e n t s c = p . c o n t e n t s ( ) ; C o n t e n t s c = p . c o n t e n t s ( ) ; } } } }
● 复习 – 通过内部类灵活实现多继承 i n t e r f a c e A { } c l a s s A { } i n t e r f a c e B { } a b s t r a c t c l a s s B { } c l a s s X i m p l e m e n t s A , B { } / / c l a s s X i m p l e m e n t s A , B { } / / w o n ’ t c o m p i l e c l a s s Y i m p l e m e n t s A { c l a s s Y e x t e n d s A { B m a k e B ( ) { B m a k e B ( ) { r e t u r n n e w B ( ) { } ; r e t u r n n e w B ( ) { } ; } } } } p u b l i c c l a s s T e s t { p u b l i c c l a s s T e s t { s t a t i c v o i d t a k e A ( A a ) { } s t a t i c v o i d t a k e A ( A a ) { } s t a t i c v o i d t a k e B ( B b ) { } s t a t i c v o i d t a k e B ( B b ) { } 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 ) { 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 ) { X x = n e w X ( ) ; Y y = n e w Y ( ) ; Y y = n e w Y ( ) ; t a k e A ( y ) ; t a k e B ( b . m a k e B ( ) ) ; t a k e A ( x ) ; t a k e B ( x ) ; } t a k e A ( y ) ; t a k e B ( b . m a k e B ( ) ) ; } } }
O O P w i t h J a v a ● 容器简介 ● C o l l e c t i o n – L i s t , S e t , Q u e u e ● M a p ● C o l l e c t i o n a n d I t e r a t o r
容器简介 ● 如何将对象组织起来 ? i n t a = 0 ; i n t b = 0 ; . . . i n t z = 0 ; M y T y p e m _ a = n e w M y T y p e ( ) ; M y T y p e m _ b = n e w M y T y p e ( ) ; . . . M y T y p e m _ c = n e w M y T y p e ( ) ;
容器简介 ● 数组 i n t [ ] a = n e w i n t [ ] { 1 , 2 , 3 } ; M y T y p e [ ] b = n e w M y T y p e [ 3 ] ; M y T y p e [ ] c = n e w M y T y p e [ 3 ] { n e w M y T y p e ( ) , n e w M y T y p e ( ) , n e w M y T y p e ( ) } ; 长度不可变 无法添加和删除数组元素 1 . 数组元素之间的关系 ? 2 . ( S e t )
容器简介 ● 容器 – 提供更灵活的组织对象的方式 ● 动态添加 , 删除 – 例如 ● L i s t , S e t , Q u e u e ● M a p – 位于包 j 中 a v a . u t i l
I t e m 1 I t e m 2 I t e m N 一列有序的对象 L i s t : 数组 , 链表 ) ( i m p o r t j a v a . u t i l . * ; A r r a y L i s t a = n e w A r r a y L i s t ( ) ; L i n k e d L i s t b = n e w L i n k e d L i s t ( ) ; / / I m p l e m e n t L i s t i n t e r f a c e L i s t c = a ; 接口 L i s t L i s t d = b ;
A d d I t e m 1 I t e m 2 I t e m 2 I t e m 2 I t e m 3 集合 ( 没有重复元素 ) S e t : i m p o r t j a v a . u t i l . * ; H a s h S e t a = n e w H a s h S e t ( ) ; T r e e S e t b = n e w T r e e S e t ( ) ; / / i m p l e m e n t S e t i n t e r f a c e 接口 S e t c = a ; S e t S e t d = b ;
I t e m 1 I t e m 2 I t e m 3 I t e m 4 队列 Q u e u e : i m p o r t j a v a . u t i l . * ; 进队 ) - e n q u e u e ( L i n k e d L i s t a = n e w L i n k e d L i s t ( ) ; 出队 ) - d e q u e u e ( P r i o r i t y Q u e u e b = n e w P r i o r i t y Q u e u e ( ) ; 先进先出 - / / I m p l e m e n t Q u e u e i n t e r f a c e 应用 : 任务调度 Q u e u e c = a ; - 接口 Q u e u e Q u e u e d = b ;
● 队列 – 先进先出 ( F i r s t i n , fi r s t o u t ) – 先来先服务 ( F i r s t c o m e , fi r s t s e r v e )
Recommend
More recommend