: N- I; Z8 a" ?, V; i7 S 19.通用编程:任何类类型的所有值都可以同object类性的变量来代替。 3 Q0 s; r1 u" w
# J6 ]& x/ C7 o7 Z. \. B
20.数组列表:ArrayList动态数组列表,是一个类库,定义在java.uitl包中,可自动调节数组的大小。 % e# N# E2 Q* A6 H/ Y7 a ^+ S6 s4 e4 o, o. y3 u7 v8 F1 }8 I
21.class类 object类中的getclass方法返回ckass类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。 6 I# k) C$ L' D4 y, x0 M % J* A& W6 D, t( f 22.class类为编写可动态操纵java代码的程序提供了强大的功能反射,这项功能为JavaBeans特别有用,使用反射Java能支持VB程序员习惯使用的工具。 . Z+ w C3 U E- T& M w8 w- E6 x/ F+ ?2 N( [5 }, S% P
能够分析类能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射机制十分强大. & _+ a* b6 x) N% D9 p $ K+ L3 Z6 i6 B6 Z1 a/ F( Y 1.在运行时分析类的能力。 M2 o7 G" U- v
4 u; s6 C& e: J- P
2.在运行时探察类的对象。 $ V4 l( b0 I5 h- [% r6 g: t' p% v, c* ?& n# C. |2 _2 w
3.实现通用数组操纵代码。 3 t" k8 |" [" `/ \, E- H9 T) M, Y$ r) i
4.提供方法对象。 " d8 U9 y/ a( J6 Q( P/ J2 P2 x
而此机制主要针对是工具者而不是应用及程序。 1 [$ c$ C: R% j2 h6 e e
( j* [3 l7 M9 |. l
反射机制中的最重要的部分是允许你检查类的结构.用到的API有: ; ]7 w. S' q5 e: C$ d) N8 K8 P- t, q, O4 d \
java.lang.reflect.Field 返回字段. % ^" Y$ k0 S! X
U" T: o$ T! b( S9 P
java.reflect.Method 返回方法. " _/ y+ l1 F* k* k# I& W" q5 N5 |
+ d; M+ A$ b7 U, ~# n
java.lang.reflect.Constructor 返回参数. 0 f- _: r3 w- f7 z6 I7 g9 G n/ ` " v4 {- I! e0 \6 h3 p; M9 ^ 方法指针:java没有方法指针,把一个方法的地址传给另一个方法,可以在后面调用它,而接口是更好的解决方案。 * d4 _& O# S% {- ~4 S7 u" q 2 U0 N- V- I1 w7 t# a H 23.接口(Interface)说明类该做什么而不指定如何去做,一个类可以实现一个或多个interface。 ! I N( E q. ~ y( m
# D# c2 }) K/ ^4 v% D
24.接口不是一个类,而是对符合接口要求的类的一套规范。 - k5 _2 K2 j2 ?" Q0 ^, k9 k
" Q" D C* v# r( G3 A 若实现一个接口需要2个步骤: / G s; B* O" m y. F) P % v3 v1 T, w* @/ P2 X 1.声明类需要实现的指定接口。 : {" ?' }3 A/ T3 q' Z k4 ` 3 w1 O9 V! A- T7 y& W 2.提供接口中的所有方法的定义。 6 C2 Q8 g6 v# C5 N3 _ c/ r' H) Q3 Y0 t7 ?! U u* c0 D
声明一个类实现一个接口需要使用implements 关键字 " k+ l7 v/ W c, u. M. k
# A8 P* {9 L6 G& q4 k7 O6 _ class actionB implements Comparable 其actionb需要提供CompareTo方法,接口不是类,不能用new实例化一个接口. a0 H W0 l6 h) ~
7 [! c$ l3 c' T3 S# Z
25.一个类只有一个超类,但一个类能实现多个接口。Java中的一个重要接口:Cloneable 0 h) x( X- ^" p$ Y8 \
6 Q/ m1 b8 l- u) a 26.接口和回调.编程一个常用的模式是回调模式,在这种模式中你可以指定当一个特定时间发生时回调对象上的方法。 / p, s) V9 D) V" q: M% R. ~; d1 D9 n$ s: ?2 @. C6 o
例:ActionListener 接口监听. 5 X. Q T. F* _# b, q8 N6 @- D' N3 q3 Z* ?* o: B
类似的API有:java.swing.JOptionPane ) E9 ?, Q7 C9 F( Z+ Y; o: S2 n& y4 k5 _0 ]% g" D! \
java.swing.Timer 5 I$ C" s3 t8 h; t! t; f8 w1 L( b; f E, Q' |/ C' t' @
java.awt.Tookit ( r( N5 _1 _ z s5 |1 c
. j5 ~: W+ m9 C* d
27.对象clone:clone方法是object一个保护方法,这意味着你的代码不能简单的调用它。 & t! i ]0 [" H% _' K+ _& e5 ^0 w$ q5 n ?% e. R
28.内部类:一个内部类的定义是定义在另一个内部的类。 7 U! J3 i# C. T8 O. {8 U3 R7 ]$ F6 B1 u2 A
原因是: & L0 s9 E" U( F1 F! Q$ o! ^. F: K
1 K% L8 Q5 i% K, ~6 V* M" p% j# O$ K( V 1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据。 1 z. P! D, A. O$ @2 W4 F- `; d1 `% r' N& ?1 P. z# n
2.对于同一个包中的其他类来说,内部类能够隐藏起来。 ) ?) ?( L8 b0 [/ B) `3 V, s& A/ } l
/ p$ ^8 v5 ^. {; p4 a5 F 3.匿名内部类可以很方便的定义回调。 * V5 ]2 q& L5 Q0 G* V
5 e5 a; s7 ~7 }
4.使用内部类可以非常方便的编写事件驱动程序。 $ V1 ?. Q1 k8 b1 h7 H8 M) c+ X- Z
; e9 g8 C& n' w W6 J0 X s
29.代理类(proxy): 2 i0 O- C% l5 y4 \$ K. B! i9 r* w/ q. T: m1 w
1.指定接口要求所有代码 " a! x( {. o* S8 x- w& K4 @" ^, Z. I# z4 y, y) R% h2 i7 [
2.object类定义的所有的方法(toString equals) " f. V7 H* D# j