Article View: cn.bbs.comp.lang.java
Article #22074Java���˼��---��6�� ������
From: �˺�2��
Date: Tue, 28 Oct 2003 01:42
Date: Tue, 28 Oct 2003 01:42
451 lines
57222 bytes
57222 bytes
��Java����עĿ��һ�������Ǵ�����ظ�ʹ�û���������߸���������ǣ������
�ĸ��ƺ������⣬���ǻ�������ö���������顣��
����C����ij��������������ظ�ʹ�����ѿ��У���Ч�����ر�������Java��
����ط�һ��������������Ҳ�������йص����⡣����ͨ���������ظ�ʹ�ô�
�룬��ȴ�ò������´���������ֱ��ʹ�ñ����ѽ��ò����Ժõ��ֳ��ࡣ
�����������뱣֤�������ԭ�еĴ��롣����һ������ǽ����������ﵽ��һĿ���
��������һ�������������ش���ԭ����Ķ������ǰ����ַ����������ϳ�
������Ϊ������������Ķ���ϲ���ɡ�����ֻ�Ǽ��ظ����ô���Ĺ��ܣ�����
���������ʽ��
�ڶ��ַ������Ե�����Щ���ɡ���һ�����࣬������Ϊ�������һ�������͡���
���ǿ���ԭ���ȡ���������ʽ���������м����´��룬ͬʱ��������е������Ӱ��
������ħ�������Ϊ�������̳С���Inheritance�����漰�Ĵ�����������ɱ�������
�ɵġ������������ij�����ƣ����̳С�������Ҫ�Ļ����֮һ�����������һ��
Ҫ���������ݻ����һЩ�����Ӱ�졣
���ںϳ���̳������ַ���������������Ϊ�������Ƶģ���Ϊ���Ƕ�Ҫ������е�
������������ͣ����ڱ��£����ǽ�����ѧϰ��Щ������������ظ�ʹ�õĻ��ơ�
6.1 �ϳɵ��
����ǰ��ѧϰ�����������ʵ���ѽ����˶�Ρ��ϳɡ�������Ϊ���кϳɣ�����ֻ����
����������������ɡ��ٸ�������˵���ٶ���Ҫ��һ�����������ɼ���Stri
ng�������ֻ���������Լ�������һ�����һ�������ڷǻ����͵Ķ�����˵
��ֻ�轫����������༴�ɣ�����ڻ����������˵���������Լ������ж������ǡ�
������ʾ����ִ�иó���ʱ���鷳����μ��3��3.1.2С�ڡ���ֵ������
218-219ҳ����
WaterSource�ڶ����һ�������DZȽ��ر�ģ�toString()����Ҳ��þͻ�֪����ÿ�ַ�
�����͵Ķ�����һ��toString()������������������ϣ��һ��String����ȴ���ij
������Ķ��ͻ�����������������������������ʽ�У�
System.out.println("source = " + source) ;
�������ᷢ��������ͼ��һ��WaterSource���һ��String����"source ="���������
��˵�Dz��ɽ��ܵģ���Ϊ����ֻ�ܽ�һ���ִ�����ӡ�����һ���ִ����������˵����
��Ҫ����toString()����sourceת�����ִ������������������ܱ��������ִ���
��������ִ����ݸ�һ��System.out.println()��ÿ����ͬ�Լ�������һ������������
��Ϊ��ʱ��ֻ��Ҫдһ��toString()������
���������ܻ���ʵ���Ϊ��������Ϊ���������е�ÿ������Զ����������
��Java�İ�ȫ�ͽ������������磬������Ϊ���ΪWaterSource����Ĭ�Ϲ���������
���ʼ��source����ӡ���������ʵ���ǣ�
219ҳ�³���
��������Ϊ�ֶ�ʹ�õĻ���ݻ��ʼ�����㣬�����2��ָ����������������
ʼ����null�����Ҽ�����ͼΪ�����е��κ�һ�����÷������ͻ����һ�Ρ�Υ����
�ֽ��ʵ�����൱�õģ����Һ����ã������ǿ��ڲ�����һ��Υ���ǰ���£���Ȼ����
�Ǵ�ӡ������
����������ֻ��Ϊÿ�����һ��Ĭ�϶�����Ϊ������������������²���Ҫ��
������ϣ����õ���ʼ��������������Щ�ط����У�
(1) �ڶ������ʱ������ζ�������ڹ���������֮ǰ�϶��ܵõ���ʼ����
(2) ���Ǹ���Ĺ������С�
(3) ������Ҫ��ʵ��ʹ���Ǹ�����֮ǰ���������ɼ��ٲ���Ҫ�Ŀ����������
��Ҫ�����Ļ���
��������չʾ�����������ַ�����
220-221ҳ����
��ע����Bath�������У������г�ʼ����ʼ֮ǰִ����һ����䡣����ڶ���ʱ����
��ʼ������Ȼ���ܱ�֤���ڽ�һ����Ϣ����һ��������֮ǰ��ִ���κγ�ʼ��������
�dz��ֲ��ɱ����������Υ��
�����Ǹó���������
221ҳ�г���
����print()ʱ��������s4��ʹ�����ֶ���ʹ��֮ǰ�������ȷ�ij�ʼ����
6.2 �̳е��
�̳���Java���Լ�����OOP���ԣ��dz����ܵؽ����һ���������ڵ�1�¾�Ϊ�������
�˼̳еĸ����������֮����֮ǰ�ĸ����ﲻʱ�õ�����ΪһЩ����ij���Ҫ��
����ʹ�ü̳С�������⣬����һ����ʱ�϶�����м̳У���Ϊ������ˣ����Java��
������Object�м̳С�
���ںϳɵ���Ƿdz�����ֱ�۵ġ���Ϊ�˽��м̳У��������һ��ȫȻ��ͬ����ʽ
����Ҫ�̳е�ʱ�����ǻ�˵�������������Ǹ������ࡣ��Ϊ���ڴ����������
һ�����Ҫ������������������ʼ������֮ǰ����Ҫ����һ���ؼ���extends��
�ں�����桰���ࡱ�����֡�����ȡ�����������Ϳ��Զ���û����������ݳ�Ա
�Լ�������������һ�����ӣ�
222ҳ����
�����������չʾ�˴������ԡ����ȣ���Cleanser append()������ִ�ͬһ��s��
�������������á�+=�������ʵ�ֵġ�ͬ��+��һ��+=����Java���ڶ��ִ����С���
�ء����?
��Σ�����Cleanser����Detergent������һ��main()���������ǿ�Ϊ�Լ���ÿ���
����һ��main()��ͨ����������������б�д���룬ʹ�Լ��IJ��Դ����ܹ���װ����
�ڡ������ڳ����к��������ڶ���࣬�������������������public�ֻ࣬��main()��
��õ����á���������������£�������ʹ�á�java Detergent����ʱ���õ���De
gergent.main()������ʹCleanser����һ��public�ࡣ�������ֽ�main()����ÿ�����
�������ɷ����Ϊÿ������е�Ԫ���ԡ���������ɲ����Ժ����轫main()ɾȥ��
�ɰ����������������Ժ�IJ��ԡ�
�������ҿɿ���Deteregent.main()��Cleanser.main()�ĵ�������ȷ���еġ�
��Ҫ����ǿ������Cleanser�е��������public���ԡ����ס������ʡ�����з���ָ
ʾ�����ԱĬ��Ϊ���Ѻõġ�������һ������ֻ������Ա���з��ʡ����������
���κ��˶���ʹ����Щû�з���ָʾ��ķ��������磬Detergent�����������κ��鷳��
Ȼ�������������ij����������̳� Cleanser�����ֻ�ܷ�����Щpublic��Ա����
���ڼƻ��̳е�ʱ��һ���ȽϺõĹ����ǽ������ֶζ���Ϊprivate���������з�����
��Ϊ public��protected��ԱҲ���������������������Ժ�����̽����һ����
������Ȼ����һЩ����ij��ϣ�������Ȼ��������һЩ�����Ⲣ����һ���õ�����
��
ע��Cleanser����Ľӿ��к���һϵ�з�����append()��dilute()��apply()��scrub()
�Լ�print()������ Detergent�Ǵ�Cleanser��������ģ�ͨ��extends�ؼ��֣�������
����Զ���ýӿ��ڵ�������Щ����������ʹ������ Detergent�ﲢδ���������ǵ���
ȷ���塣����һ�����Ϳɽ��̳�����ɡ��Խӿڵ��ظ����á����ߡ��ӿڵ�������
���ʵʩϸ�ڿ����������ã����Dz�������ǿ�����ص㣩��
������scrub()�����������Ի���ڻ����ﶨ���һ������������������ġ�
����������£�����ͨ�������°汾��������Ի���ķ��������� scrub()�����
ֻ�Ǽط�����scrub()�ĵ��á����������˵ݹ���ã����Dz�Ը������һ�����Ϊ
���������⣬Java�ṩ��һ�� super�ؼ��֣������õ�ǰ���Ѵ��м̳е�һ��������
����Superclass�������Ա��ʽsuper.scrub()���õ��Ƿ���scrub()�Ļ���汾��
���м̳�ʱ�����Dz�������ֻ��ʹ�û���ķ���������������������������Լ���
�·�������ʱ��ȡ������������ͨ������������κη�������ȫһ��ģ�ֻ��ض�
����ɡ�extends�ؼ����������������·����������Ľӿ��������С���չ
����foam()��������������һ�����
��Detergent.main()����ǿɿ�������Detergent���ɵ���Cleanser�Լ�Deterge
nt�����п��õķ�������foam()����
6.2.1 ��ʼ������
��������漰�������ࡪ�����༰�����࣬��������ǰ��һ��������������������
�Ľ�����ʱ�����ܻ����һЩ�Ի��ⲿ�����ƺ�����ӵ���������ͬ�Ľӿڣ�
���ҿɰ�һЩ����ķ������ֶΡ����̳в��ǽ����ظ��ƻ���Ľӿ����¡���
���������һ������ʱ���������а��˻����һ�����Ӷ�������Ӷ��������
�Ǹ�ݻ��౾�?�������һ�������ⲿ����������Ӷ����ѷ�װ���������
�������ˡ�
��Ȼ�������Ӷ���Ӧ����ȷ�س�ʼ��������ֻ��һ�ַ����ܱ�֤��һ�㣺�ڹ�������
ִ�г�ʼ����ͨ����û���������������㹻��������Ȩ����ִ�жԻ���ij�ʼ
������������Ĺ������У�Java���Զ�����Ի�������ĵ��á���������������
��չʾ�˶�������̳е�Ӧ�ã�
224-225ҳ����
�ó���������ʾ���Զ����ã�
Art constructor
Drawing constructor
Cartoon constructor
���Կ������������ڻ���ġ��ⲿ�����еģ����Ի�����������������֮ǰ�õ�
��ȷ�ij�ʼ����
��ʹû��ΪCartoon()����һ����������������Ҳ��Ϊ�����Զ��ϳ�һ��Ĭ�Ϲ���������
�����Ի�������ĵ��á�
1. �����Ա����Ĺ�����
�����������Լ�Ĭ�ϵĹ�������Ҳ����˵�����Dz����κ��Ա��������������Ժ�����
�������ǣ���Ϊ�����ھ��崫��ʲô�Ա��������⡣�����û��Ĭ�ϵ��Ա�����������
���ú���һ���Ա�����ij�����������������ȷ�ر�д�Ի���ĵ��ô��롣����
��super�ؼ����Լ��ʵ����Ա����б�ʵ�ֵģ�������ʾ��
225-226ҳ����
������BoardGames()�ڵĻ���������������ͻᱨ���Լ��Ҳ���Games()��ʽ��
һ����������������⣬������������У��Ի�������ĵ����DZ������ĵ�һ��
���飨�����ʧ������������������ָ������
2. �������������
����ղ�ָ���������������ǿ��������������������������������öԻ��
�����ĵ��á�����ζ������֮ǰ���ܳ����κζ������������ڵ�9�»ῴ����������
ͬʱҲ���ֹ�����������������һ��������κ�Υ���¼�����Ȼ������ʱ��Ϊ��
����ɲ��㡣
6.3 �ϳ���̳еĽ��
���ʱ��Ҫ�ϳ���̳����ּ����������ʹ�á������������չʾ�����ͬʱ��
�ü̳���ϳɼ������Ӷ�һ�����ӵ��࣬ͬʱ���б�Ҫ�Ĺ�������ʼ��������
226-228ҳ����
���ܱ�������ǿ�����ǶԻ�����г�ʼ������Ҫ�������ڹ������ͷ����һ������
�������������Ƿ���ȷ��ʼ���˳�Ա�������ԶԴ˱����ر�������⡣
6.3.1 ȷ����ȷ�����
Java���߱���C++�ġ��ƻ���������ĸ����C++�У�һ���ƻ������һ������
���Զ������ƻ���������֮���Խ���ʡ�ԣ������������Java��ֻ�����Ƕ���
����ǿ���ƻ����ǡ������ռ������ڱ�Ҫ��ʱ���Զ������ڴ档
�����ռ��������ʱ���ܺܺõع���������ijЩ����£����ǵ���������Լ��Ĵ���
ʱ�ڲ�ȡһЩ�ж�������Щ�ж�Ҫ����������ȷ��������������4���Ѿ�ָ������
�����Dz���֪�������ռ���ʲôʱ��Ż����?����˵��֪���ʱ����á�����һ��
ϣ��Ϊһ�������ʲô����������дһ���ر�ķ�������ȷ��ר�ŵ�����������顣ͬ
ʱ����Ҫ�ÿͻ�����Ա֪�����DZ�������������������������һ�еĺ��棬�����9��
��Υ����ƣ�Ҫ��ϸ���͵�������뽫���������������һ��finally�Ӿ��У��Ӷ�
�����κο��ܳ��ֵ�Υ���¼���
������ܵ���һ������������ϵͳ�����ӣ���������Ļ�����ͼ�Σ�
229-230ҳ����
���ϵͳ�е����ж���������ij��Shape��������״����Shape������һ��Object������
������Ϊ���ǴӸ�����ȷ�̳еġ�ÿ������¶����� Shape��cleanup()������ͬʱ��
Ҫ��super�����Ǹ������Ļ���汾�����ܶ�������ڼ���õ����з������ɸ�����һ
ЩҪ�����Ĺ������������ض���Shape�ࡪ��Circle��Բ����Triangle������Σ��Լ�
Line��ֱ�ߣ������Ƕ�ӵ���Լ��Ĺ�����������ɡ���ͼ����draw������ÿ�����
�����Լ���cleanup()���������ڽ����ڴ�Ķ����ָ��ض������֮ǰ�ľ���
��main()�У��ɿ��������¹ؼ��֣�try��finally������Ҫ����9�²Ż�������ʽ���
���ǡ����У�try�ؼ���ָ���������Ŀ飨�ɻ����Ŷ��磩��һ����������Ҳ����
˵������ܵ��ر�Ĵ���������һ�ִ������ǣ��þ������������finally�Ӿ�Ĵ���
�϶������ִ�С�������try�鵽�״治���ڣ�ͨ��Υ����Ƽ�����try����ж��ֲ�Ѱ
����Ӧ�ã��������finally�Ӿ����˼�ǡ�����Ϊx����cleanup()�����ۻᷢ��ʲô
���顱����Щ�ؼ��ֽ��ڵ�9�½���ȫ�桢����Ľ��͡�
���Լ�������У�����ע��Ի����Լ���Ա�������ĵ���˳������һ
���Ӷ���Ҫ����һ��Ϊ��ͨ����Ӧ��ȡ��C++����������ġ��ƻ����� ��ȡ��ͬ��
����ʽ��������������йص����������������Ҫ�����Ԫ����Ȼ�ɼ�Ȼ���
�û����������������ʾ������
�������£������ܲ����Ǹ����⣻ֻ���������ռ��������ְ�ɡ���һ������
���Լ���ȷ���ͱ����ر��������Ҫ����ȫ�Ŀ��ǡ�
1. �����ռ���˳��
����ָ���Լ���ȷ��֪����ʱ�Ὺʼ�����ռ��������ռ���������Զ����õ����á���
ʹ�õ����ã���Ҳ�������Լ�Ը����κ�˳����ն�������⣬Java 1.0ʵ�ֵ���
���ռ�������ͨ���������finalize()���������ڴ�Ļ������⣬�����κζ��������
��Ҫ���������ռ������л��ա�������ȷ�����ʲô���������Լ����������Ҳ�
Ҫ����finalize()��Ȼ��������ǰָ���������ǿ��Java1.1����������βģ�飨Fin
alizer����
6.3.2 ���ֵ�����
ֻ��C++����Ա���ܲŻᾪ�������ֵ����أ���Ϊ��Ĺ���ԭ������C++������ȫ��ͬ��
�����Java������һ�����������ء�ʹ�ö�Σ�������������Ǹ������������
����Ͳ��������κλ���İ汾���������۷�������һ��������һ�������ж��壬
���ض�����Ч��
232ҳ����
������һ�»ὲ����������ٻ������������ȫһ�µ�ǩ��ͷ�������������ͬ��
�ķ����������ʹ�˸е��Ի�������C++��������������ԭ�������ܹ���ֹ����һЩ
����Ҫ�Ĵ���
6.4 ����ѡ��ϳɻ��Ǽ̳�
���ۺϳɻ��Ǽ̳У����������ǽ��Ӷ��������Լ��������С���һ������������
���죬�Լ��������ѡ��
��������������ڲ�һ������������ԣ�����ʹ����Ľӿڣ�ͨ��Ӧѡ��ϳɡ�Ҳ��
��˵�����ǿ�Ƕ��һ������ʹ�Լ�������ʵ����������ԡ���������û��ῴ������
�Ѷ���Ľӿڣ���������Ƕ�����Ľӿڡ����ǵ�����Ч����������������Ƕ����
�����private����
��Щʱ�������������û�ֱ�ӷ�������ĺϳɡ�Ҳ����˵����Ҫ����Ա��������Ա�
Ϊpublic����Ա����Ὣ����������������������һ�ְ�ȫ���������������û�֪����
�����ϳ�һϵ�����ʱ���ӿھ�������⡣car�����������һ���ܺõ����ӣ�
233-234ҳ����
�������װ���ǹ��Ϸ���ʱ��Ҫ���ǵ�һ�����أ�����ֻ�ǻ���Ƽ�һ���֣�
�����������ڿͻ�����Ա������ʹ���࣬�����ഴ���ߵı�̸��ӳ̶�Ҳ����Ƚ�
�͡�
��ѡ��̳У�����Ҫȡ��һ���ֳɵ��࣬���������һ������汾��ͨ��������ζ����
����ʹ��һ��������;���࣬������ض������������ж��ơ�ֻ���Լ�����֪
���Լ�������һ�������������ϳ�һ��������������������෴������
�ڡ�������һ����𡣡����ڡ���ϵ���ü̳������ģ���� ��ϵ���úϳ�����
��ġ�
6.5 protected
��������������˼̳еĸ��protected����ؼ�����������������塣�����������
��private��Ա��ʱ���ǡ�˽�С��ģ��κ��˲��÷��ʡ�����ʵ��Ӧ���У��������ijЩ
��������ز���������ͬʱ�������������ij�Ա��protected�ؼ��ֿɰ�������������
һ�㡣�����˼�ǡ�������˽�еģ������ɴ������̳е��κζ�������ͬһ������
�������κζ������ʡ���Ҳ����˵��Java�е�protected���Ϊ���롰�Ѻá�״̬��
���Dz�ȡ����õ������DZ��ֳ�Ա��private״̬����������ζ�Ӧ�����Ի� ����ʵʩ
ϸ�ڽ����ĵ�Ȩ������һǰ���£���ͨ��protected����������ļ̳��߽����ܵ���
�Ƶķ��ʣ�
235ҳ����
���Կ�����change()ӵ�ж�set()�ķ���Ȩ�ޣ���Ϊ���������protected���ܵ�������
����
6.6 �ۻ�
�̳е�һ���ô�����֧�֡��ۻ�����������������µĴ��룬ͬʱ����Ϊ���д���
��ɴ�������ɽ��´�����뵽�´����ͨ���һ���ֳɵġ������Ե���̳У�ͬ
ʱ�����Ա�µ���ݳ�Ա�������������¶������з����������ǿɱ������д���ԭ�ⲻ
������������Ҳ������ʹ�������Ϊ�������Լ��ı�̴���һ�����ִ���֪
����϶��������Լ����´�����ɵġ�����һ�����������д����������ȣ������
�������ʱ��;����Ϳ����ٺܶࡣ
��ĸ���Ч��dz��ã�����������Ա����û��Ԥ�ϵ��ġ���������Ҫ������Դ������
ʵ�ִ�����������ֻ��Ҫ����һ��������ڼ̳кͺϲ����dz����ģ���
���Ҫ��ס����һ���ص㣺������һ�����ϵ��������ۻ�Ĺ�̣���������ѧϰ֪
ʶһ��Ȼ�ɸ��Ҫ����о����ܶ�ķ���������һ����Ŀ�����֮����˭��������
��ǰ��֪���еĴ𰸡�����ܽ��Լ�����Ŀ����һ���л�ġ��ܲ��Ͻ������Ӷ�
���ϵط�չ�Ľ���������ø��ijɹ��Լ���ֱ�ӵķ�����
���ܼ̳���һ�ַdz����õļ���������ijЩ����£��ر�������Ŀ�ȶ������Ժ���Ȼ
��Ҫ���µĽǶȿ����Լ�����ṹ������������һ�������Ľṹ�����ס���̳��Ƕ�
һ�������ϵ�ı���ζ�š�������������Ǹ������һ�����͡������ǵij���Ӧ
������һЩϸ��ĩ�ڣ���Ӧ�����ڴ����Ͳ����������͵Ķ��������DZ������ԡ���
��ռ䡱��һ��ģ�͡�
6.7 ��������
�̳���ֵ��ע��ĵط�������û��Ϊ�����ṩ�������̳��Ƕ�����ͻ���֮��Ĺ�ϵ
��һ�ֱ��������ܽ�ù�ϵ�������������������һ�����͡���
���ֱ�ﲢ�������ǶԼ̳е�һ�������ͣ��̳���ֱ���������ṩ֧�ֵġ���Ϊһ
�����ӣ���ҿɿ���һ����ΪInstrument�Ļ��࣬�����ڱ�ʾ��������һ���������
��Wind�����ڼ̳���ζ�Ż�������з���������������������ʹ�ã��������Ƿ���
������κ���Ϣ��ɷ��������ࡣ�� Instrument����һ��play()��������Wind�豸Ҳ
�����������������ζ�������ܿ϶�����Ϊһ��Wind����Ҳ��Instrument��һ�����͡�
����������ӽ�ʾ������������ṩ����һ�����֧�֣�
236-237ҳ����
�������������Ȥ��������tune()���������ܽ���һ��Instrument�����Wind.mai
n()�У�tune()������ͨ��Ϊ�丳��һ�� Wind��������õġ�����Java�����ͼ���ر�
�ϸ����Դ�ҿ��ܻ�е�����֣�Ϊʲô����һ�����͵ķ���Ҳ�ܽ�����һ��������
�����ǣ�����һ��Ҫ��ʶ��һ��Wind����Ҳ��һ��Instrument�����Ҷ��ڲ���Wind
�е�һ��Instrument����������û�з���������tune()���á���tune()�У�����������
Instrument�Լ���Instrument����������κζ�������������ǽ���һ��Wind���ת
����һ�� Instrument������Ϊ�������������͡���
6.7.1 ��ν���������͡���
֮���Խ���������֣�������һ������ʷԭ���⣬Ҳ�������ڴ�ͳ�����ϣ���̳�ͼ��
�����Ǹ�λ�����������������չ����Ȼ���ɸ���Լ���ϰ�����κη����������
ͼ�������أ�Wind.java�ļ̳�ͼ��������������ӣ�
237ҳͼ
�������͵ķ����Ǵ������ൽ���࣬��ͷ���ϣ�����ͨ������������������͡�����
Upcasting���������Ϳ϶��ǰ�ȫ�ģ���Ϊ�����Ǵ�һ������������͵�һ��������
�͡�����֮���������ǻ����һ�������������Ȼ�����ķ�������������
���˻���ķ����������������͵�ʱ����ӿڿ��ܳ��ֵ�Ψһһ�������������
��ʧ����������Ӯ����Щ�������������û���κ���ȷ�����ͻ������������ע����
���£�������Ϊʲô�����������͵�ԭ�����ڡ�
Ҳ����ִ���������ͣ�����ʱ�����ٵ�11��Ҫ��ϸ������һ��������
1. ���ۺϳ���̳�
���������ij�������У�������ʹ�ô�������ܲ�ȡ��һ�������ǣ�����ݺͷ���ͳ
һ��װ��һ���������ʹ���Ǹ���Ķ�����Щʱ����ͨ��ϳɡ��������ֳɵ�
�����������ࡣ��̳������ټ��һ����������ˣ����ܼ̳���ѧϰOOP�Ĺ���еõ���
������ǿ������������ζ��Ӧ�þ����ܵص���ʹ�����෴��ʹ����ʱҪ�ر����ء�ֻ
�������֪���̳������з���������Ч��ǰ���£��ſɿ�����Ϊ�ж��Լ�����Ӧ��ѡ
�úϳɻ��Ǽ̳У�һ����İ취���ǿ����Ƿ���Ҫ�������������ͻػ��ࡣ����
�����ݣ�����Ҫ�̳С��������Ҫ�������ͣ���Ӧ�����Լ���ֹ�̳е����á�����һ
��������ԣ��������ҽ��ܱ�������������͵�һ�ֳ��ϡ���ֻҪ��ס�������Լ�
���������Ҫ���������𡱣����ںϳɻ��Ǽ̳е�ѡ��Ͳ�Ӧ���Ǹ�̫������⡣
6.8 final�ؼ���
�����ᄈ��Ӧ�û�������ͬ��final�ؼ��ֵĺ�����ܻ�������һЩ���졣������һ��
����˼��������������������ܸı䡱��֮����Ҫ��ֹ�ı䣬�����ǿ��ǵ����������
�أ���ƻ�Ч�ʡ�����������ԭ������Щ�������Ҳ������final�ؼ��ֵ����á�
�ڽ���ȥ��С������ǽ�����final�ؼ��ֵ�����Ӧ�ó��ϣ���ݡ������Լ��ࡣ
6.8.1 final���
������������Զ����Լ��İ취���߱�����ij������ǡ����������ҪӦ������
���������棺
(1) �����ڳ�������Զ����ı�
(2) �������ڳ�ʼ����һ��ֵ�����Dz�ϣ������仯
���ڱ����ڵij�������������ɽ�����ֵ����װ������Ҫ�ļ������Ҳ����
˵��������ڱ����ڼ���ǰִ�У��Ӷ��ʡ����ʱ��һЩ������Java �У���Щ��ʽ��
����������ڻ�������ͣ�Primitives��������Ҫ��final�ؼ��ֽ��б��ڶ�����
��һ��������ж����ʱ������һ��ֵ��
����static����final�ֶΣ���ֻ�ܴ洢һ����ݣ����Ҳ��øı䡣
����ͬ������ʹ��final�����ǻ�������ͣ���ĺ�����������е���Ժ��ˡ�
���ڻ�������ͣ�final�Ὣֵ���һ��������ڶ�����final�Ὣ�����
һ�������������ʱ�����뽫����ʼ����һ������Ķ�������Զ���ܽ�����
��ָ����һ������Ȼ��������ǿ����ĵġ�Java�Դ�δ�ṩ�κ��ֶΣ��ɽ�һ
������ֱ�ӱ��һ�������ǣ����ǿ��Լ���дһ���࣬ʹ���еĶ�����С�����
Ч����һ����Ҳ���������飬��Ҳ���ڶ���
��������ʾfinal�ֶ��÷���һ�����ӣ�
29-240ҳ����
����i1��I2���Ǿ���final���ԵĻ�������ͣ������б����ڵ�ֵ���������dz�������
Ϊ�����ڵij���ʹ���⣬���κε��뷽ʽ��Ҳ��������κβ�ͬ�� I3������������ೣ
����ʱ����͵�һ�ַ�ʽ��public��ʾ���ǿ��ڰ���ʹ�ã�Staticǿ������ֻ��һ��
����final��������һ������ע����ں��й̶���ʼ��ֵ���������ڳ����fianl s
tatic��������ͣ����ǵ����ָ�ݹ���Ҫȫ�����ô�д��ҲҪע��i5�ڱ����ڼ���δ
֪�ģ�������û�д�д��
��������ij������������final�����϶����ֵ���ڱ���ʱ��֪����i4��i5����֤��
����һ�㡣�����������ڼ�ʹ�������ɵ����֡����ӵ���һ����Ҳ���ҽ�ʾ����fi
nalֵ��Ϊstatic�ͷ�static֮��IJ��졣ֻ�е�ֵ�������ڼ��ʼ����ǰ���£����ֲ�
��Ż��ʾ��������Ϊ�����ڼ��ֵ����������Ϊ����ͬ�ġ����ֲ���ɴ���������
������
240-241ҳ����
ע�����fd1��fd2��˵��i4��ֵ��Ψһ�ģ���i5��ֵ�������ڴ�������һ��FinalData��
�����ı䡣������Ϊ���������static������������ʱ��ʼ�������ÿ����һ����
��ʱ��ʼ����
��v1��v4�ı��������ǽ�ʾ��final���ĺ��塣��������main()�п�����������
����Ϊ����v2����final�����ԾͲ����ٸı����ֵ��Ȼ������ȷʵ�����ٽ�v2��
һ���¶�����Ϊ���������final�������final����һ������ȷ�к��塣���ǻᷢ
��ͬ��ĺ��������������飬����ֻ��������һ�����͵ľ����ѡ��������final��
�����ƺ����罫��������ͱ��final��ô���á�
2. �հ�final
Java 1.1�������Ǵ������հ�final������������һЩ������ֶΡ����ܱ�������final
����ȴδ�õ�һ����ʼֵ����������������£��հ�final��������ʵ��ʹ��ǰ�õ���ȷ
�ij�ʼ�������ұ�������������֤��һ�涨���Թ᳹��Ȼ�����final�ؼ��ֵĸ���Ӧ
�ã��հ�final������������ԡ��ٸ�������˵��λ�����ڲ���һ��final�ֶ����ڶ�
ÿ������������ͬ��ͬʱ��Ȼ�����䡰���䡱�ı��ʡ������г�һ�����ӣ�
241-242ҳ����
����ǿ��Ҫ�����Ƕ�final���и�ֵ���?��Ҫô�ڶ����ֶ�ʱʹ��һ����� ʽ��Ҫô
��ÿ���������С�����Ϳ���ȷ��final�ֶ���ʹ��ǰ�����ȷ�ij�ʼ����
3. final�Ա���
Java 1.1�������ǽ��Ա������final���ԣ����������Ա����б��ж����ǽ����ʵ�����
��������ζ����һ���������ڲ������Dz��ܸı��Ա������ָ��Ķ�����������ʾ��
242ҳ����
ע���ʱ��Ȼ��Ϊfinal�Ա�������һ��null���գ����ͬʱ���������Ჶ��������
���ǶԷ�final�Ա�����ȡ�IJ�����һ��ġ�
����f()��g()������չʾ�������͵��Ա���Ϊfinalʱ�ᷢ��ʲô���������ֻ�ܶ�ȡ
�Ա��������ɸı���
6.8.2 final����
֮����Ҫʹ��final�����������dz��ڶ����������ɵĿ��ǡ���һ����Ϊ����������
��ֹ�κμ̳���ı���ı������塣��Ƴ���ʱ����ϣ��һ����������Ϊ�ڼ̳��ڼ䱣
�ֲ��䣬���Ҳ��ɱ����ǻ��д���Ϳ��Բ�ȡ����������
����final�����ĵڶ��������dz���ִ�е�Ч�ʡ���һ���������final�������Ϳ�
�Ѷ��Ǹ����������е��ö����롰Ƕ�롱�����ֻҪ����������һ��final��������
���ͻᣨ������Լ����жϣ�����Ϊִ�з������û��ƶ��ȡ�ij��������뷽������
�Ա���ѹ���ջ�������������벢ִ���������������ջ�Ա��������Է���ֵ��
�д��?���෴������÷���������ʵ�ʴ����һ���������滻�������á��������ɱ�
�ⷽ������ʱ��ϵͳ����Ȼ�����������̫����ô����Ҳ����Ӻ�ף������ܵ�
������Ƕ�������������κ�����������Ϊ�κ�������ڷ����ڲ���ʱ�������
��Java���������Զ������Щ���������Ϊ�����ǡ��ؾ����Ƿ�Ƕ��һ��final������Ȼ
����û��Dz�Ҫ��ȫ���ű���������ȷ�����������жϡ�ͨ����ֻ���ڷ����Ĵ�����
�dz��٣���������ȷ��ֹ���������ǵ�ʱ��Ӧ���ǽ�һ��������Ϊfinal��
��������private�������Զ���Ϊfinal���������Dz��ܷ���һ��private�������������
�Բ��ᱻ�������ǣ���ǿ��������������������������ʾ������Ϊһ��private��
�����finalָʾ��ȴ����Ϊ�Ǹ������ṩ�κζ���ĺ��塣
6.8.3 final��
���˵������final������Ķ���ǰ����final�ؼ��֣����ͱ����Լ���ϣ������
��̳У����߲����������κ��˲�ȡ���ֲ���������֮����������������ԭ������
����϶�����Ҫ�����κθı䣻���߳��ڰ�ȫ��������ɣ����Dz�ϣ������������
�ദ�?��
������⣬���ǻ��?���ǵ�ִ��Ч�ʵ����⣬����ȷ���漰����������������ж�
��Ҫ�����ܵ���Ч��������ʾ��
244ҳ����
ע����ݳ�Ա�ȿ�����final��Ҳ���Բ��ǣ�ȡ�������Ǿ���ѡ��Ӧ����final�Ĺ���
ͬ����������ݳ�Ա���������Ƿ����final�����ඨ���final���ֻ�ǽ�ֹ
���м̳С���û�и������ơ�Ȼ���������ֹ�˼̳У�����һ��final���е����з�
����Ĭ��Ϊfinal����Ϊ��ʱ��Ҳ���������ǡ����������ǽ�һ��������ȷ����Ϊfin
alһ���������ʱ����ͬ��Ч��ѡ��
��Ϊfinal���ڵ�һ���������finalָʾ��������û���κ����塣
6.8.4 final��ע������
���һ����ʱ��������Ҫ�����Ƿ�һ��������Ϊfinal�����ܻ����ʹ���Լ�����ʱִ
��Ч�ʷdz���Ҫ��û�����븲���Լ��ķ����������뷨��ijЩʱ������ȷ�ġ�
��Ҫ���������Լ��ļٶ���ͨ�������Ǻ���Ԥ��һ�����Ժ����ʲô�����ʽ�������
�����á�������;����������ˡ�����һ�����������final���Ϳ��ܶž������������
Ա����Ŀ�ж��Լ�������м̳е�;������Ϊ���Ǹ�û���뵽���������ʹ�á�
��Java���Dz�����һ�۵��������ӡ������ر��õ�һ������Vector��������ǿ�
�Ǵ����ִ��Ч�ʣ��ͻᷢ��ֻ�в����κη�����Ϊfinal������ʹ�䷢�Ӹ������á�
���Ǻ����ͻ��뵽�Լ�Ӧ�̳к���������õ�һ���࣬����������ȴ��������
���뷨�����������ٿ����������������������ǡ����ȣ�Stack����ջ���Ǵ�Vector�̳�
���ģ��༴Stack���ǡ�һ��Vector������˵���Dz�ȷ�еġ���Σ�����Vector�����Ҫ
�ķ�������addElement()�Լ�elementAt()�ȣ����Ƕ������synchronized��ͬ���ģ���
�����ڵ�14��Ҫ������������������������ܿ�����ܻ��final�ṩ�����ܸ���
�����һ�ɶ�������ˣ�����Ա���ò��²��Ӧ������������Ż����ڱ������Ȼ
��������˱�����ƣ��治��������ڳ���Ա����ʲô���������
��һ��ֵ��ע�����Hashtable��ɢ�б?��������һ����Ҫ�ı��ࡣ����û�в�����
��final���������������ڱ�������ط��ᵽ��������ȻһЩ��������Ա���������
��Ա����ȫȻ��ͬ�����ʣ�ע��Ƚ�Hashtable���̵ķ�������Vecor�ķ���������
����û���˵������Ȼ�Dz�Ӧ����������ܿ����ġ�һ����Ʒ����Ʊ�ò�һ�º�
��Ӵ��û��Ĺ���������Ҳ����һ������ǿ���˴����������ʱ��Ҫ��ǿ�������ġ�
6.9 ��ʼ������װ��
����ഫͳ�������������Ϊ������̵�һ����һ��������ġ������е��dz�ʼ
����������ʽִ�г�������Щ�����У�����Գ�ʼ����̽������صĿ��ƣ���֤stat
ic��ݵij�ʼ����������鷳��������һ��static��ݻ�ó�ʼ��֮ǰ��������һ��st
atic���ϣ������һ����Чֵ����ô��C++�оͻ�������⡣
Java��û����������⣬��Ϊ������˲�ͬ��װ�ط���������Java�е�һ�ж������Ƕ�
�����������ø�Ӽ��������������е�һ��������һ�»ὲ��������
��ÿ������Ĵ��붼�����ڶ������ļ��С���������Ҫ���룬�����Ǹ��ļ��Dz�����
��ġ�ͨ�������ǿ���Ϊ����Ǹ����һ����������ϣ�������벻��������롣��
��static��������һЩϸ�����壬����Ҳ����Ϊ����������״�ʹ�õ�ʱ�����롱��
�״�ʹ�õĵط�Ҳ��static��ʼ������ĵط���װ�ص�ʱ������static�����static
����鶼�ᰴ�ձ�����˳���ʼ�����༴�������ඨ�������д���˳����Ȼ��st
atic���ֻ���ʼ��һ�Ρ�
6.9.1 �̳г�ʼ��
�����б�Ҫ�������ʼ�����������ʶ�����а����̳У����������з����������һ
�������Եĸ����۲��������룺
246-247ҳ����
�ó����������£�
247ҳ�г���
��Beetle����Javaʱ������ĵ�һ��������װ�س��������ҵ��Ǹ��ࡣ��װ�ع����
��װ�س���ע������һ�����ࣨ��extends�ؼ���Ҫ������˼����������֮��������
�������Ƿ�������Ǹ������һ�����������̶��ᷢ�������Ž�����Ĵ���
���뵱��ע�ͱ�ע�������Լ�ȥ֤ʵ����
�����ຬ����һ�����࣬����һ�������漴Ҳ�����룬�Դ����ơ�������������
����ࣨ��ʱ��Insect��ִ��static��ʼ����������һ��������ִ�У��Դ����ơ���
֤���˳���Ƿdz��ؼ�ģ���Ϊ������ij�ʼ������Ҫ�����ڶԻ����Ա����ȷ��ʼ
����
��ʱ����Ҫ������ȫ��װ����ϣ������ܹ������������ȣ���������е����л���
�����Ͷ���������ǵ�Ĭ��ֵ�����������Ϊnull��������û����������
��������£��������Զ����еġ���Ҳ��ȫ������super������ָ�����������ã�������
Beetle()�������еĵ�һ������һ������Ĺ��������������������ȫ��ͬ��
�����̡���˳����������Ժ�ʵ������ᰴ������˳����Գ�ʼ�������ִ��
������ʣ������岿�֡�
6.10 �ܽ�
���ۼ̳л��Ǻϳɣ����Ƕ��������������͵Ļ��ϴ���һ�������͡����ڵ��������
������ͨ��ϳ���ʵ���������͵ġ�������ظ�ʹ�á���������Ϊ�����ͻ�ʵʩ
��̵�һ����ʹ�á��������ʵ�ֽӿڵġ�������Ӧʹ�ü̳С���������������
������ӵ�л���Ľӿڣ������ܹ����䡰�������͡�Ϊ���ࡣ������һ��Ҫ������
���������⣬��һ����������Ҫ�ġ�
���ܼ̳����������ij�������еõ����ر��ǿ��������ʵ������һ�����ʱ�����
�����ȿ��Dz��úϳɼ�����ֻ�����ر��Ҫ��ʱ��Ӧ���Dz��ü̳м�������һ�»�
�ὲ��������⣩���ϳ��Եø�������ǣ�ͨ����Լ��ij�Ա����Ӧ��һЩ�̳м�
�ɣ�����������ȷ�ı���Щ��Ա��������ͣ��ɴ˿ɸı����ǵ���Ϊ��
���ܶ��ڿ�����Ŀ������˵��ͨ��ϳɺͼ̳�ʵ�ֵĴ���������кܴ�İ������á���
�������������Ա��ȫ������֮ǰ��һ�㶼ϣ������������Լ�����ṹ�����������
��ṹӦ����ÿ������Լ��ض�����;�����Dz��ܹ���缯�ɵĹ���̫�࣬�����
ʵ���������Ҳ���ܹ�С����ɲ������Լ�ʹ�ã����߲��������¹��ܣ�������ʵ
�ֵ���Ӧ���ܹ����������
6.11 ��ϰ
(1) ��Ĭ�Ϲ����������Ա����б?���������ࣺA��B���������Լ������Լ�����A�̳�
һ����ΪC�����࣬����C�ڴ���һ����ԱB����ҪΪC����һ����������������C��һ����
���۲���
(2) ����ϰ1��ʹA��B���к����Ա����Ĺ����������Dz���Ĭ�Ϲ�������ΪCдһ��
������������C�Ĺ�������ִ�����г�ʼ��������
(3) ʹ���ļ�Cartoon.java����Cartoon��Ĺ�����������ע�����ݱ�ע��ȥ�����ͻ�
����ʲô���顣
(4) ʹ���ļ�Chess.java����Chess��Ĺ�����������Ϊע�ͱ�ע��ȥ��ͬ����ͻᷢ��
ʲô��
--
"` O| " jVHT T ~ "" "
[m[1;35m�� ��Դ:���ɽ��ˮ bbs.neu.edu.cn��[FROM: 219.216.70.3][m
Technical Details
Message-ID:
<492e78$BS_@bbs.neu.edu.cn>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!fu-berlin.de!opentransit.net!newsfeed.mesh.ad.jp!newsfeed.media.kyoto-u.ac.jp!news.neu.edu.cn!NEUShow Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB X-Google-Thread: f6cb0,d6fdb830ae0d725a,start X-Google-Attributes: gidf6cb0,public X-Google-ArrivalTime: 2003-10-27 17:43:09 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!fu-berlin.de!opentransit.net!newsfeed.mesh.ad.jp!newsfeed.media.kyoto-u.ac.jp!news.neu.edu.cn!NEU From: amou.bbs@bbs.neu.edu.cn (�˺�2��) Newsgroups: cn.bbs.comp.lang.java Subject: Java���˼��---��6�� ������ Date: 28 Oct 2003 01:42:00 GMT Organization: ��ɽ��ˮ Message-ID: <492e78$BS_@bbs.neu.edu.cn> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit X-Filename: java/M.1067305304.A Lines: 451