Article View: cn.bbs.comp.lang.java
Article #22075Java���˼��---��7�� ������
From: �˺�2��
Date: Tue, 28 Oct 2003 01:43
Date: Tue, 28 Oct 2003 01:43
528 lines
62174 bytes
62174 bytes
�������������ij���������ԣ��������ǵ���������������ǰ��������ݳ����
�̳С���
�������ԡ���Polymorphism������һ���ǶȽ��ӿڴӾ����ʵʩϸ���з���������༴
ʵ���ˡ���ʲô���롰������������ģ��ķ��롣���ö����Եĸ���������֯�Լ�
�ɶ��Ծ��ܻ�ø��ơ����⣬���ܴ�����������չ���ij�����������Ŀ�Ĵ��������
����������Ҫ���������Ե�ʱ�����Ƕ����Է���� ���ɳ�����
ͨ��ϲ�������������Ϊ����װ�����ɴ������µ�������͡�ͨ��Ծ���ʵʩϸ�ڵ���
�أ��ɽ��ӿ���ʵʩϸ�ڷ��룬ʹ����ϸ�ڳ�Ϊ��private����˽�У���������֯��ʽʹ
��Щ�г���̱����˸о���Ϊ���ʡ���������ȴ�漰�ԡ����͡��ķֽ⡣ͨ����һ
�µ�ѧϰ�������֪��ͨ��̳пɽ�һ�����������Լ������ͻ������Լ��Ļ�����
�Դ�����������ʮ����Ҫ�ģ���Ϊ������ͣ�����ͬ�Ļ�����������������ɱ���
��ͬһ�����ͶԴ����ֻ��һ�δ��룬���ɶ����в�ͬ�����ͽ���ͬ��Ĵ��?����
���ж����Եķ������ã�һ�����Ϳɽ��Լ�����һ�����Ƶ�������ֿ���ֻҪ���Ƕ���
����ͬ�Ļ���������������ġ����������ͨ����ַ�������Ϊ�ϵIJ���ʵ�ֵģ���
ͨ�����ʵ�ֶ���Щ�����ĵ��á�
����һ���У����Ҫ��dz�����ѧϰ�йض����Ե����⣨Ҳ������̬���Ƴٰ�
�������ڰ���ͬʱ��һЩ�����ӣ����������صIJ��ֶ��Ѱ���ֻ�������
�����йصĴ��롣
7.1 ��������
�ڵ�6�£������֪���ɽ�һ��������Ϊ���Լ�������ʹ�ã�������Ϊ��Ļ����͵�һ
������ʹ�á�ȡ��һ��������������Ϊ�����;��ʹ�õ���Ϊ�ͽ�����������
�͡�������Ϊ�̳����Ļ����ǻ���λ�����Ϸ���
��������Ҳ������һ�����⣬��������ʾ����ִ��������������鷳����ο���3�µ�3
.1.2С�ڡ���ֵ������
252-253ҳ����
���У�����Music.tune()����һ��Instrument���ͬʱҲ���մ�Instrument�������
�����ж�������һ��Wind���ݸ� tune()��ʱ�ͻ���������������ʱû������
�ı�Ҫ���������ǿ��Խ��ܵģ�Instrument��Ľӿڱ��������Wind�У���ΪWind�Ǵ�
Instrument��̳еõ��ġ���Wind��Instrument���������Ϳ��ܡ���С���Ǹ��ӿڣ���
�����ܰ����ñ�Instrument������ӿڻ�ҪС��
7.1.1 ΪʲôҪ��������
�����������Ҳ���Ե���Щ��֡�Ϊʲô�����˶�Ӧ���������һ������������أ�
������������ʱ���Ϳ��ܲ����ⷽ����ɻ��������tune()��ȡ��һ��Wind��
������Ϊ�Լ����Ա���ʹ�ã��ƺ����Ӽ�ֱ�۵öࡣ��Ҫע�⣺����������
������Ϊϵͳ��Instrument��ÿ������дһ��ȫ�µ�tune()�����谴��ǰ������ۣ���
��Stringed�����֣���Brass��ͭ�ܣ�������Instrument����������
253-254ҳ����
��������Ȼ�е�ͨ����ȴ����һ������ıˣ�����Ϊÿ��������Instrument2���д��
�������صķ���������ζ�ŵ�һ�ξ�Ҫ���ö�ı�������Ժ��������һ����
tune()������·�������ΪInstrument���һ�������ͣ���Ȼ��Ҫ���д������빤����
���⣬��ʹ��Ƕ��Լ���ij���������й������ã�������Ҳ������ʾ�κδ�������һ
�������͵����������̾��Եü��ѹ��?��ʧ�ص�Σ�ա�
������ֻдһ����������������Ϊ�Ա��������ʹ�ã�����ʹ����Щ�ض���������
�����ǻ�öࣿҲ����˵����������ܲ��������ֻ࣬���Լ��Ĵ���������
��������ôʡ�µĹ������������Թ��Ƶġ�
�����ǡ������ԡ��������ֵĵط���Ȼ���������Ա���ر����г���̱�����
�����ڶ����ԵĹ���ԭ����Ȼ�Ե���Щ���衣
7.2 �������
����Music.java�������ԣ���ͨ�����г��������ᡣ�����Wind.play()���Ȼ����
��ϣ�����������������ƺ�����Ը�����ǵ�ϣ�����¡���۲�һ��tune()������
public static void tune(Instrument i) {
// ...
i.play(Note.middleC);
}
�����Instrument�����������������£��������������֪��Instrument���ָ��
����һ��Wind������һ��Brass��Stringed�أ��������ӵ�֪��Ϊ��������������
���⣬�����б�Ҫ̽��һ�¡���������⡣
7.2.1 �������õİ�
��һ����������ͬһ�������������ӵ�һ��ͳ�Ϊ������Binding�������ڳ�������
��ǰִ�а��ɱ����������ӳ�������еĻ������ͽ��������ڰ��������ǰ
�����δ��˵����������Ϊ�����κγ��������ﶼ�Dz����ܵġ�C������ֻ��һ��
�������ã��Ǿ��ǡ����ڰ���
���������������Ի�ĵط�ȫ�����ڰ��йأ���Ϊ��ֻ��һ��Instrument����
ǰ���£���������֪������õ����ĸ�������
����ķ������ǡ����ڰ�������ζ�Ű��������ڼ���У��Զ��������Ϊ��
���ڰ�Ҳ��������̬���������ڰ�����һ������ʵ���˺��ڰ�ͬʱ��
���ṩһЩ���ƣ����������ڼ��ж϶�������ͣ����ֱ�����ʵ��ķ�����Ҳ����˵��
��������ʱ��Ȼ��֪����������ͣ����������û������Լ�ȥ���飬�ҵ���ȷ�ķ�����
�塣��ͬ�����ԶԺ��ڰ�ʵ�ַ������������ġ����������ٿ���������Ϊ������
��Ҫ�ڶ����а���ijЩ�������͵���Ϣ��
Java�а����з��������ú��ڰ��������һ�������ѱ�������final������ζ��
����ͨ�����ؾ����Ƿ�Ӧ���к��ڰ��������Զ�����ġ�
ΪʲôҪ��һ������������final�أ�������һ��ָ�����������ܷ�ֹ�����˸����Ǹ�
��������Ҳ�����Ҫ��һ���ǣ������Ч�ء��رա���̬�����߸��߱���������Ҫ
���ж�̬������һ�����������Ϳ�Ϊfinal�����������Ч�ʸ�ߵĴ��롣
7.2.2 ������ȷ����Ϊ
֪��Java������з�����ͨ����ڰ��ж������ԺͿ�����Ӧ�ر�д�Լ���
���룬��������ͨ����ʱ�����е��������֤������ͬ�Ĵ�����ع�������
������һ�ַ��������ǿ��ԡ���һ����Ϣ����һ�������ö��������ж�Ҫ��ʲô��
�顣��
���������ij�������У���һ������ġ���״�����ӡ�������������ÿ��ӻ�����ʽ
���ֳ��������Ծ���������˵�����⡣���ܲ��ҵ��ǣ��������ѧ����ΪOOPֻ��Ϊ
ͼ�λ������Ƶģ�������ʶ��Ȼ�Ǵ���ġ�
��״������һ�����࣬��ΪShape������д����������ͣ�Circle��Բ�Σ���Squar
e�����Σ���Triangle������Σ��ȵȡ����֮����ϲ��������ӣ���Ϊ��������⡰Բ
������״��һ�����͡��ȸ���������̳�ͼ������չʾ�����ǵĹ�ϵ��
257ҳͼ
�������Ϳ�������������ر��ֳ�����
Shape s = new Circle();
��������Ǵ�����Circle�������������������һ��Shape������濴�����ƺ�
���ڴ����������һ�����ͷ������һ��������ʵ������ȫ���еġ�����Ϊ���ռ̳й�
ϵ��Circle����Shape��һ�֡���˱������Ͽ�������䣬������������ʾһ��������Ϣ
��
�����ǵ�������һ�������ʱ�������������︲�ǣ���
s.draw();
ͬ��أ����Ҳ����Ϊ�����Shape��draw()����Ϊ��Ͼ���һ��Shape�����ô����
���������֪�����������κ������أ�����ʱʵ�ʵ��õ���Circle.draw()����Ϊ���ڰ�
���Ѿ����루�����ԣ���
����������Ӵ�һ������ͬ�ĽǶ�˵�������⣺
257-258ҳ����
��Դ�Shape������������ж�����Shape������һ��ͨ�ýӿڡ���Ҳ����˵�����У���
�Σ���״����������ɾ�������า������Щ���壬Ϊÿ���������͵ļ�����״����
���˶�һ������Ϊ��
������Shapes�����һ��static��������ΪrandShape()�������������ÿ�ε�����
ʱΪij�����ѡ���Shape�������һ�������ע��������������ÿ��return����
��ġ�������ȡ��ָ��һ��Circle��Square����Triangle�ľ��������Ϊ������
�� Shape��������������ʲôʱ���������������;��û����˽���ľ�������
������ʲô����Ϊ�϶�����һ��������Shape���
main()����Shape����һ�����飬���е����ͨ���randShape()�ĵ������롣����
��ʱ������֪���Լ�ӵ��Shape������֪���֮���κξ���������������ͬ��֪��
��Ȼ����������������ﲽ��Ϊÿ��Ԫ�ص���draw()��ʱ����������йص�
��ȷ��Ϊ��ħ����ط����������������ʾ��չʾ������
259ҳ����
��Ȼ�����ڼ�����״��ÿ�����ѡ��ģ�����ÿ�����ж������в�ͬ�Ľ��֮����Ҫ
ͻ����״�����ѡ����Ϊ���ô����������һ�㣺Ϊ���ڱ����ʱ����ȷ�ĵ�
�ã��������������κ�������鱨����draw()�����е��ö���ͨ��̬���еġ�
7.2.3 ��չ��
���ڣ���������Ȼ����������Instrument��ʾ�����ڴ��ڶ����ԣ����Կɸ���Լ���
��Ҫ��ϵͳ����������������ͣ�ͬʱ������true()��������һ��������õ�OOP��
���У����ǵĴ����������з����������tune()��ģ�ͣ�����ֻ�����ӿ�ͨ�š�
����˵����ij�����С���չ�ԡ�����Ϊ���Դ�ͨ�õĻ���̳��µ�������ͣ��Ӷ�
����һЩ���ܡ������Ϊ����Ӧ�����Ҫ����ô�Ի���ӿڽ��в��ݵķ�����
��Ҫ�ı䣬
�����������ӣ����������ڻ����������ķ������Լ�һϵ�����࣬��ô�����ʲ
ô����أ�������ʾ��ͼ��
260ҳͼ
������Щ����������ࡪ��tune()Ĭ���ع����������tune()���κε���ʹtune
()λ��һ���������ļ�����·�����ӵ�Instrument�Ľӿڣ�tune()Ҳ����ȷ�ع�
��������Ҫ���±��롣������������Ƕ�����ʾ��ͼ�ľ���ʵ�֣�
260-262ҳ����
�·�����what()��adjust()��ǰ�߷���һ��String���ͬʱ���ض��Ǹ����˵������
��ʹ�����ܶ�ÿ���������е���
��main()�У������ǽ�ij��������Instrument3����ʱ���ͻ��Զ��������͵�Instrum
ent3��
���Կ�������Χ��tune()�������������д��붼����仯��ͬʱ��tune()����ȴ˿����
�����ǵ�Ӱ�죬��Ȼ���ҵ����������������ö�����ϣ��ﵽ��Ŀ�ꡣ���ǶԴ���
�����ĺ���Գ����в�Ӧ�ܵ�Ӱ��IJ������Ӱ�졣���⣬������Ϊ��������һ
��������Ҫ�ļ��������������Ա��������ı�Ķ���ͬû�з���ı�Ķ�����ֿ���
��
7.3 ���������
�����������ò�ͬ���۹����������µ�ͷһ�����ӡ���������������У�����play()��
�ӿڻ��ڱ����ǵĹ���з���仯������ζ������ʵ�ʲ�û�С����ǡ� ����������ʹ��
�����ء����������������ǶԷ������й��ش��?ʹ�䲻������?��������Ϊ���ܲ�
����������ϣ��ġ�������������ӣ�
263ҳ����
���ﻹ������������һ�����ڻ���ĸ����InstrumentX�У�play()����������һ��
int��������ֵ����ı�ʶ����NoteX��Ҳ����˵����ʹNoteX��һ������Ҳ������
��Ϊһ����ʶ��ʹ�ã����������ᱨ����?����WindX�У�play()����һ��NoteX���
������һ����ʶ��n����������ʹ�á�play(NoteX NoteX)����������Ҳ���ᱨ�����
����һ���������������dz���Ա���⸲��play()�Ĺ��ܣ����Է��������Ͷ���ȴ����
Щ��ȷ�С�Ȼ���������ʱ�ٶ����dz���Ա������С����ء�����ǡ����ǡ�������
ϸ����������������𡣡����ء���ָͬһ�����ڲ�ͬ�ĵط����ж��ֺ��壻��
���ǡ���ָ����ʱ��ض�ֻ��һ�ֺ��壬ֻ��ԭ�ȵĺ�����ȫ�������ĺ���ȡ���ˡ���
ע��������ر���Java����淶���Ա�����ʶ���Ӧ����noteX������ɰ�����������
�ֿ���
��tune�У���InstrumentX i���ᷢ��play()��Ϣ��ͬʱ��ij��NoteX��Ա��Ϊ�Ա���ʹ
�ã�MIDDLE_C��������NoteX����int���壬���ص�play()������int�汾��õ����á�
ͬʱ��������δ�������ǡ������Ի�ʹ�û���汾��
����ǣ�
InstrumentX.play()
7.4 ������ͷ���
����������������Instrument�������У�����Instrument�ڵķ������϶��ǡ�α����
������ȥ������Щ�������ͻ���ִ�����������Instrument����ͼ��Ϊ���������ȥ
�����������һ��ͨ�ýӿڡ�
֮����Ҫ�������ͨ�ýӿڣ�Ψһ��ԭ���������Ϊ��ͬ��������������ͬ�ı�ʾ����
Ϊ���ǽ�����һ�ֻ���ʽ��ʹ�����ܶ����������������ͨ�á���һЩ������Ϊ��
����������һ�������ǰ�Instrument��Ϊ��������ࡱ����ơ������ࡱ������
��ͨ���ͨ�ýӿڴ���һϵ���࣬����Ҫ����һ�������ࡣ�����������������ǩ��
�������������������ͨ��̬���ƽ��е��ã�Ȼ��������һ��ָ��������
��������������ͬ�����Ա��������ͬ���ͻ���ֹ��������ǻ��?����
����Ը��ģ���
�����һ����Instrument����ij����࣬�Ǹ���Ķ����϶�û��ʲô���塣����֮
��Instrument�����ý����DZ��ӿڣ����DZ��һЩ�����ʵʩϸ�ڡ����Դ���һ��
Instrument������û������ģ���������ͨ����Ӧ��ֹ�û���������Ϊ�ﵽ���Ŀ�ģ�
����Instrument�ڵ����з�������ʾ������Ϣ�������������ӳ���Ϣ�������ڣ���Ҫ��
���û���һ����г��ס��ɿ��IJ��ԡ�������Σ���õķ��������ڱ����ڼ䲶����
�⡣
���������⣬Javaר���ṩ��һ�ֻ��ƣ���Ϊ����������������һ�ֲ�����ķ�
����ֻ����һ��������û�з������塣�����dz�������ʱ���õ����
abstract void X();
���˳�����һ��������������ࡱ�����һ���������һ������������
��ͱ���ָ����abstract���������������������DZ���һ��������Ϣ��
��һ���������Dz�����ģ���ôһ��������ͼ����Ǹ����һ�����������ֻ��ȡ
ʲô�ж��أ����ڲ��ܰ�ȫ��Ϊһ�������ഴ��������Ķ������Ի�ӱ����������
��һ��������ʾ��ͨ�����ַ������������ɱ�֤������ġ������ԡ������Dz��ص��Ļ�
������
����һ��������̳У���������������͵�һ�����ͱ���Ϊ�����е����г���
�����ṩ�������塣�������������ȫ����ѡ����������������Ҳ���dz���ģ���
�ұ�������ǿ��������abstract�ؼ��ֱ�־�Ǹ���ġ������ʡ�
��ʹ�������κ�abstract��������ɽ�һ���������ɡ������ࡱ�����һ����û��Ҫӵ
���κγ����������������ֹ�Ǹ��������ʵ�����������ͻ��Ե÷dz����á�
Instrument��ɺ����ɵ�ת����һ�������ࡣֻ������һ���ַ������ɳ�������
Ϊʹһ��������Ժ�����ǿ�����ǽ�������з�����ͬʱ��ɳ�������������
�������ӣ�
266ҳͼ
�����������Ĺ�ġ����ҡ��������ӣ����в����˳������Լ�������
266��268ҳ����
���Կ�������������⣬ʵ�ʲ�û�н���ʲô�ı䡣
����������ͷ�����ʱ�����Ƿdz����ã���Ϊ����ʹһ����ij��������Ե���ʵ����
��ȷ�����û��ͱ������Լ������������
7.5 �ӿ�
��interface�����ӿڣ��ؼ���ʹ����ĸ����������һ�㡣���ǿɽ�������Ϊһ������
�������ࡣ�����?���߹涨һ����Ļ���ʽ���������Ա����б��Լ��������ͣ�
�����涨�������塣�ӿ�Ҳ���˻�������͵���ݳ�Ա�������Ƕ�Ĭ��Ϊstatic��
final���ӿ�ֻ�ṩһ����ʽ�������ṩʵʩ��ϸ�ڡ�
�ӿ����������Լ���������ʵ���ҵ������࣬��������Ӧ����������������ӡ������
��������һ���ض��ӿڵ����д��붼֪�������Ǹ��ӿڿ��ܻ����ʲô����������ǽ�
�ڵ�ȫ�����塣�������dz��ѽӿ����ڽ��������֮���һ����Э�顱����Щ�������
�ij���������Բ�����һ����Ϊ��protocol����Э�飩�Ĺؼ��֣������ı�����ӿ���
ͬ�����顣
Ϊ����һ���ӿڣ���ʹ��interface�ؼ��֣���Ҫ��class���������ƣ����ǿ���inte
rface�ؼ��ֵ�ǰ������һ��public�ؼ��֣���ֻ�нӿڶ�����ͬ���һ���ļ��ڣ�����
�߽���ʡ�ԣ�Ӫ��һ�֡��Ѻõġ�״̬��
Ϊ�������һ���ض��Ľӿڣ���һ��ӿڣ������࣬Ҫʹ��implements��ʵ�֣��ؼ�
�֡�����Ҫ������˼�ǡ��ӿڿ����������Ǹ����ӣ�����������Ĺ���ϸ�ڡ�����
��Щ֮�⣬��������Ĺ�������̳м�Ϊ���ơ��������������ӵ�ʾ��ͼ��
269ҳͼ
����ʵ����һ���ӿ��Ժͻ����һ����ͨ���࣬���ñ���ʽ���������չ��
�ɾ�����һ���ӿ��еķ���������ȷ����Ϊ��public���������㲻��ȷ���壬����Ҳ��
Ĭ��Ϊpublic��������ʵ��һ���ӿڵ�ʱ�����Խӿڵķ������붨���public������
�Ļ������ǻ�Ĭ��Ϊ���Ѻõġ������һ����������ڼ̳й���ж�һ�������ķ��ʡ���
Java������������������������
��Instrument���ӵ��İ汾�У���ҿ���ȷ�ؿ�����һ�㡣ע��ӿ��е�ÿ��������
�ϸ����һ�����������DZ�����Ψһ����ġ�������⣬Instrument5��û��һ��������
����Ϊpublic�������Ƕ����Զ����public���ԡ�������ʾ��
270-271ҳ����
����ʣ��IJ��ְ���ͬ�ķ�ʽ���������ǿ������ɾ����������͵�һ����ΪInstrument
5�ġ���ͨ���࣬һ����ΪInstrument5�ġ����� �࣬����һ����ΪInstrument5�ġ�
�ӿڡ���������Ϊ������ͬ�ġ���ʵ�ϣ�������tune()�����п��Է���û���κ�֤����
ʾ Instrument5�����Ǹ�����ͨ���ࡢ���������һ�����ӿڡ����������ǹ����
��ÿ�ַ�����ʹ����Ա�ܶԶ���Ĵ�����ʹ�ý��в�ͬ�Ŀ��ơ�
7.5.1 Java�ġ����ؼ̳С�
�ӿ�ֻ�DZȳ����ࡰ���һ����ʽ�������;����ֹ��Щ�����ڽӿڸ�û�о���
��ʵʩϸ�ڡ���Ҳ����˵��û����洢�ռ��롰�ӿڡ�������һ�𡪡�����û���κΰ�
�����Է�ֹ����ӿںϲ���һ����һ����������Ҫ�ģ���Ϊ���Ǿ�������Ҫ�������
һ����˼����x������a��Ҳ������b��Ҳ������c������C++ �У��������ϲ���һ���
�ж����������ؼ̳С������Ҳ�����Ϊ���㣬��Ϊÿ���������һ���Լ���ʵʩϸ��
����Java�У����ǿɲ�ȡͬ����ж�����ֻ������һ����ӵ�о����ʵʩϸ�ڡ�������
�ϲ�����ӿڵ�ʱ��C++�����ⲻ����Java�����ݡ�������ʾ��
272ҳͼ
��һ���������У����Dz���һ��Ҫӵ��һ���������壨û�г������Ļ��ࡣ��
��ȷʵ���һ���ǽӿڼ̳У���ôֻ�ܴ�һ���̳С�ʣ������л�Ԫ�ض������ǡ���
�ڡ������ǽ����нӿ�������implements�ؼ��ֵĺ��棬���ö��ŷָ����ǡ��ɸ����
Ҫʹ�ö���ӿڣ�����ÿ���ӿڶ����Ϊһ�����������ͣ��ɶ�������������͡�����
�������չʾ��һ�������塱��ͬ�����ӿںϲ�������������������һ�����ࣺ
272-273ҳ����
���п��Կ�����Hero��������ActionCharacterͬ�ӿ�CanFight��CanSwim�Լ�CanFly��
����������������ʽ�ϲ�һ����������ӿڵ�ʱ������������ȳ��֣�Ȼ����ǽ�
�ڣ�����������ᱨ�?��
��ע��fight()��ǩ����CanFight�ӿ���ActionCharacter��������ͬ�ģ�����û����He
ro��Ϊfight()�ṩһ������Ķ��塣�ӿڵĹ����ǣ����ǿ��Դ���̳У��Ժ�ͻῴ��
����������õ��Ľ�����һ���ӿڡ�����봴�������͵�һ��������ͱ��������ṩ
���ж����һ���ࡣ����Heroû��Ϊfight()��ȷ���ṩһ�����壬����������ͬActio
nCharacter���ģ��������������Զ��ṩ�����ǿ��Դ���Hero �Ķ���
����Adventure�У����ǿɿ��������ĸ����������ǽ���ͬ�Ľӿں;�������Ϊ�Լ�����
����ʹ�á�����һ��Hero���������Դ��ݸ���Щ�����е��κ�һ��������ζ������
�������������͵�ÿһ���ӿڡ����ڽӿ�����Java��Ƶģ������������������κ�����
�����ҳ���Ա���ضԴ˼����κ��ر�Ĺ�ע��
ע�����������������ǽ�ʾ�˽ӿ���ؼ�����ã�Ҳ��ʹ�ýӿ�����Ҫ��һ��ԭ����
����������������ࡣʹ�ýӿڵĵڶ���ԭ����ʹ�ó�������ԭ����һ��ģ���
ֹ�ͻ�����Ա����������һ�������Լ��涨�������һ���ӿڡ�����������һ��
���⣺����Ӧ��ʹ��һ���ӿڻ���һ���������أ���ʹ�ýӿڣ����ǿ���ͬʱ��ó���
���Լ��ӿڵĺô������Լ����봴���Ļ���û���κη���������߳�Ա��������ô��
����ζ�Ը��ʹ�ýӿڣ���Ҫѡ������ࡣ��ʵ�ϣ��������֪��ij�ֶ������Ϊ��
���࣬��ô��һ��ѡ����ǰ�����һ���ӿڡ�ֻ���ڱ���ʹ�÷���������߳�Ա����
��ʱ��Ӧ���Dz��ó����ࡣ
7.5.2 ͨ��̳���չ�ӿ�
���ü̳м������ɷ����Ϊһ���ӿ�����µķ���������Ҳ���Խ������ӿںϲ���һ��
�½ӿڡ�������������£����յõ��Ķ���һ���½ӿڣ���������ʾ��
274-275ҳ����
DangerousMonster�Ƕ�Monster��һ������չ�����������һ���½ӿڡ�������Dra
gonZilla��ʵ�ֵġ�
Vampire������ڼ̳нӿ�ʱ�ſ�ʹ�á�ͨ��������ֻ�ܶԵ���һ����Ӧ��extends��
��չ���ؼ��֡������ڽӿڿ����ɶ������ӿڹ��ɣ������ڹ���һ���½ӿ�ʱ��exte
nds�������ö����ӿڡ������ҿ���������ӿڵ�����ֻ�Ǽ�ʹ�ö��ŷָ�
��
7.5.3 �������
��������һ���ӿڵ������ֶζ��Զ�����static��final���ԣ����Խӿ��ǶԳ���ֵ����
�����һ���ù��ߣ��������C��C++��enum�dz����Ƶ�Ч����������ʾ��
275-276ҳ����
ע����Java�������ӵ�й̶���ʶ���static final��������ͣ��༴�����ڳ�
��ȫ�����ô�д��ĸ�����»��߷ָ�������ʶ����Ķ�����ʣ���
�ӿ��е��ֶλ��Զ��߱�public���ԣ�����û��Ҫר��ָ����
���ڣ�ͨ����c07.*��c07.Months�����ǿ��ԴӰ���ⲿʹ�ó������������κ�
����еIJ���������⣬Ҳ���������� Months.JANUARY�ı��ʽ��ֵ�������á���Ȼ
�����ǻ�õ�ֻ��һ��int�����Բ���C++��enum����ӵ�ж�������Ͱ�ȫ�ԡ����뽫��
��ǿ�б��루Ӳ���룩���Լ��ij�������ȣ����֣����õģ����������Ѿ���һ����
�Ľ�����ͨ���ѡ�Ӳ���롱���ֵ���Ϊ��Ϊ��ħ�����֡��������Ĵ����Ƿdz���
��ά���ġ�
��ȷʵ��������������Ͱ�ȫ�ԣ��ɹ��������������һ���ࣨע�͢٣���
276-277ҳ����
�٣���Rich Hoffarth��һ��E-mail�������������д�������С�
��������Month2����Ϊ��Java�����Ѿ���һ��Month������һ��final�࣬������һ
��private������������û�����ܴ���̳У����������һ��ʵ��Ψһ��ʵ�������Щ
final static�������������౾���ڲ������ģ�������JAN��FEB��MAR�ȵȡ���Щ����
Ҳ��month������ʹ�ã������������ܹ���������ѡ�·ݣ����ǰ����֣�ע����������
����һ�������JAN��ʹƫ����������1��ҲʹDecemberȷʵ��Ϊ12�£�����main()�У�
���ǿ�ע����͵İ�ȫ�ԣ�m��һ��Month2��������ֻ�ܽ�������Month2����ǰ��
��Months.java�����У�ֻ�ṩ��intֵ�����Ա������������һ���·ݵ�int��������ʵ
�ʻ��һ������ֵ�����������ܲ�ʮ�ְ�ȫ��
�����ܵķ���Ҳ�������ǽ���ʹ��==����equals()������main()β��չʾ������
7.5.4 ��ʼ���ӿ��е��ֶ�
�ӿ��ж�����ֶλ��Զ�����static��final���ԡ����Dz����ǡ��հ�final�������ɳ�
ʼ���ɷdz�����ʽ�����磺
277-278ҳ����
�����ֶ���static�ģ��������ǻ����״�װ����֮���Լ��״η����κ��ֶ�֮ǰ���
��ʼ����������һ���IJ��ԣ�
278ҳ�ϳ���
��Ȼ���ֶβ����ǽӿڵ�һ���֣����DZ������Ǹ��ӿڵ�static�洢�����С�
7.6 �ڲ���
��Java 1.1�У��ɽ�һ���ඨ��������һ���ඨ���С���ͽ������ڲ��ࡱ���ڲ����
���Ƿdz����ã���Ϊ������ɶ���Щ�������ϵ������з��飬���ɿ���һ������
��һ������ġ��ɼ��ԡ���Ȼ�����DZ�����ʶ���ڲ�������ǰ�����ġ��ϳɡ�������
���Ÿ�����
ͨ�������ڲ������Ҫ�������ر����Եģ����ٲ��������о����Լ���Ҫʹ���ڲ��ࡣ
�ڱ��µ�ĩβ���������ڲ���������֮��һᷢ��һ���ر�����ӡ�ͨ����Ӧ
�ÿ����������ʶ���ڲ���ĺô���
�����ڲ���Ĺ����ƽ������ģ����ඨ������һ�����ڷ�װ������ڲ�����ִ�����
���������鷳����μ��3�µ�3.1.2С�ڡ���ֵ������
278-279ҳ����
����ship()�ڲ�ʹ�ã��ڲ����ʹ�ÿ������������κ��ûʲô�ֱ������Ψһ
���Ե��������������Ƕ����Parcel1���档����Ҳ��þͻ�֪��������ʵ����Ψһ��
���
����͵�һ������ǣ�һ���ⲿ��ӵ��һ������ķ�������᷵��ָ��һ���ڲ���ľ�
�������������
279-280ҳ����
�����ڳ��ⲿ���static�����ڲ�֮����κεط�����ڲ����һ�������뽫�Ǹ�
�����������Ϊ���ⲿ����.�ڲ���������main()��չʾ������
7.6.1 �ڲ������������
���Ϊֹ���ڲ��������Ȼûʲô�ر�ĵط����Ͼ�������ʵ�������Ե���Щ����С
����Java�Ѿ���һ���dz���������ػ��ơ���ֻ�������Ϊ���Ѻõġ���ֻ��һ������
�ɼ����ǰ����һ���ڲ��ࡣ
Ȼ���������������͵�һ�����ࣨ�ر��ǵ�һ���ӿڣ���ʱ���ڲ���Ϳ�ʼ
������ؼ����ã�������ʵ�ֵĶ������һ���ӿھ�����������������һ��������
ͬ��Ч�����������ڲ���������ȫ���벻�ɼ����״̬�������κ��˶�����
�ˡ��������ǿ��Էdz����������ʵʩϸ�ڡ����ǵõ���ȫ���ر�����һ���������
�ӿڵľ����������п��ܲ�֪��ȷ�����͡�������������
280-281ҳ����
���ڣ�Contents��Destination�����ɿͻ�����Աʹ�õĽӿڣ���ס�ӿڻὫ�Լ�����
�г�Ա�����public���ԣ���Ϊ��������������ڵ���һ���ļ����ԭʼ��Conten
ts��Destination�������Լ����ļ������public�ġ�
��Parcel3�У�һЩ�¶����Ѿ����룺�ڲ���PContents����Ϊprivate�����Գ���Parce
l3֮�⣬�����κζ��������ܷ����� PDestination����Ϊprotected�����Գ���Parc
el3��Parcel3���ڵ��ࣨ��ΪprotectedҲΪ�����˷���Ȩ��Ҳ����˵��protectedҲ
�ǡ��Ѻõġ������Լ�Parcel3�ļ̳���֮�⣬�����κζ��������ܷ���PDestination��
����ζ�ſͻ�����Ա����Щ��Ա����ʶ����ʽ����ܵ����ơ���ʵ�ϣ���������������
�����͵�һ��private�ڲ��ࣨ����һ��protected�ڲ��࣬����Լ��������һ���̳�
�ߣ�����Ϊ���Dz��ܷ������֣�������classTest������������ԣ�����private��
���࣬�������Ա����ȫ��ֹ�������������ͱ��룬���ɽ������ʵʩϸ����ȫ������
����������⣬�ӿͻ�����Ա�ĽǶ�������һ���ӿڵķ�Χû������ģ���Ϊ���Dz���
���ʲ����ڹ����ӿ�����κζ��ⷽ��������һ����Java������Ҳ�л�����Ч�ʸ��
�Ĵ��롣
��ͨ�����ڲ��������Ϊprivate��protected����ֻ����public���ߡ��Ѻõġ���
ע��Contents���س�Ϊһ�������ࡣ�����Ҳ����ʹ��һ����ͨ�࣬��������������
�������Ȼ��һ�����ӿڡ���
7.6.2 �������������е��ڲ���
���ˣ������ѻ�������ڲ���ĵ�����;������Щ�漰�ڲ���Ĵ��룬ͨ�����Ķ�
�ǡ����������ڲ��࣬�dz����Ҽ�����⡣Ȼ���ڲ������Ʒdz�ȫ�棬���ɱ�
��ػ��������ǵ���������÷���������������һ����������һ��������������ڴ���
�ڲ��ࡣ���������ԭ���ʹ������������
(1) ����ǰ��չʾ������������ʵ��ij����ʽ�Ľӿڣ�ʹ�Լ��ܴ����ͷ���һ����
��
(2) Ҫ���һ�����ӵ����⣬��ϣ��һ���࣬���������Լ��ij�����ͬʱ��Ը
������
������������������ǰ��Ĵ��룬�Ա�ʹ�ã�
(1) ��һ�������ڶ������
(2) �ڷ�����һ���������ڶ������
(3) һ�������࣬����ʵ��һ���ӿ�
(4) һ�������࣬������չӵ�з�Ĭ�Ϲ�������һ����
(5) һ�������࣬����ִ���ֶγ�ʼ��
(6) һ�������࣬ͨ��ʵ���ʼ�����й����������ڲ����ӵ�й�������
������Щ����innerscopes���ڷ������ȣ�����ǰ�������ͨ�ýӿڻ��������Լ�����
�����ö��壬ʹ�����������е�������ʹ�ã�
283ҳ�ϳ���
������������ΪContents������һ�������࣬���Կɲ�ȡ�������ָ���Ȼ����ʽ������
һ���ӿ�����
283ҳ�г���
�����Ǻ��о���ʵʩϸ�ڵ�һ����ͨ�࣬��WrappingҲ��Ϊ�������������һ��ͨ�á�
�ӿڡ�ʹ�ã�
283ҳ�³���
������Ĵ����У�����ע�Wrapping��һ��Ҫ��ʹ���Ա����Ĺ����������ʹ�����
�ø����Ȥ�ˡ�
��һ������չʾ�������һ������������������һ������������д���һ����
����ࣺ
284ҳ�ϳ���
PDestination������dest()��һ���֣�����Parcel4��һ���֣�ͬʱע���Ϊ��ͬĿ¼
��ÿ�����ڲ���һ���ڲ���ʹ�����ʶ�� PDestination�����������ᷢ������ij�ͻ��
����ˣ�PDestination���ɴ�dest()���ⲿ���ʡ���ע���ڷ�������з������������
��������ָ�����Destination��һ�����֮�⣬û���κζ�������dest()�ı߽�֮��
����Ȼ������������PDestination����������dest()�ڲ�������Ϊ��dest()����֮��PD
estination����һ����Ч�Ķ���
�����������չʾ�������������������Ƕ��һ���ڲ��ࣺ
284-285ҳ����
TrackingSlip��Ƕ����һ��if�����������ڡ��Ⲣ����ζ�����������������ġ�����
����ͬ�������ж����õ����롣Ȼ���ڶ�������Ǹ�������֮�⣬���Dz���ʹ�õġ�
����Щ���⣬��������һ����ͨ�ಢû��ʲô���
����������ӿ�������Щ��֣�
285ҳ�³���
cont()����ͬʱ�ϲ��˷���ֵ�Ĵ������룬�Լ����ڱ�ʾ�Ǹ�����ֵ���ࡣ������⣬
�����������ġ�����û�����֡����ҿ������ƺ�������������ͷ�Ե��ǣ���������
��һ��Contents����
return new Contents()
������֮���������ֺ�֮ǰ��������˵������һ�ȣ���������һ���ඨ������ˣһ��
������
return new Contents() {
private int i = 11;
public int value() { return i; }
};
������ֵ��Ҫ������˼�ǣ���������Contents����������������һ������
��new���ʽ���صľ����Զ��������ͳ�һ��Contents��������ڲ�������ʵҪ
�����ǣ�
class MyContents extends Contents {
private int i = 11;
public int value() { return i; }
}
return new MyContents();
�������ڲ����У�Contents����һ��Ĭ�Ϲ����������ġ�������δ���չʾ�˻�����
Ҫ�����Ա�����һ��������ʱ�������飺
286-287ҳ����
Ҳ����˵�����ǽ��ʵ����Ա����ش��ݸ�����������������Ϊ�ڡ�new Wr
apping(x)���д���x���������ӵ��һ��������������ڵ���super()ʱ�ij���������
ͬ��
��ǰ�������������У��ֺŲ�����־��������Ľ����C++��ͬ�����෴�����־����
�ڰ���������Ǹ����ʽ�Ľ�����ˣ�����ȫ�ȼ����������κεط�ʹ�÷ֺš�
����������ڲ����һ���������ij����ʽ�ij�ʼ������ʱ�����ʲô����أ�������
������ģ�û�����ָ��������������Dz���ӵ��һ����������Ȼ�����ǿ��ڶ���
�Լ����ֶ�ʱ���г�ʼ����
287ҳ����
����ͼ����һ�������ڲ��࣬����ʹ���������ڲ����ⲿ�����һ�������������Ҫ
���ⲿ����Ϊfinal���ԡ����������ǽ�dest()���Ա�����Ϊfinal��ԭ����������
�������ͻ�õ�һ�������ڳ�����ʾ��
ֻҪ�Լ�ֻ�������һ���ֶΣ����������Ϳ϶����С���������Ҫ��ȡһЩ�����ڹ���
�����ж�����Ӧ��������أ�ͨ��Java 1.1��ʵ���ʼ�������ǿ�����Ч��Ϊһ������
�ڲ��ഴ��һ����������
288ҳ����
��ʵ���ʼ��ģ���У����ǿɿ������벻����Ϊ���ʼ��ģ�飨��if��䣩��һ����ִ
�С�����ʵ���ϣ�һ��ʵ���ʼ��ģ�����һ�������ڲ���Ĺ���������Ȼ����Ĺ���
�����ģ����Dz��ܶ�ʵ���ʼ��ģ����й��ش��?����ֻ��ӵ����Щ������������
һ����
7.6.3 ���ӵ��ⲿ��
���Ϊֹ�����Ǽ���ڲ�����������һ�����������Լ�������֯������������Щ��
�ܷdz����ã����ƺ������ر�����עĿ��Ȼ�����ǻ���������һ����Ҫ����ʵ������
�Լ����ڲ���ʱ���Ǹ���Ķ���ͬʱӵ��ָ���װ������Щ�����װ��������ڲ���
����һ�����ӡ����������ܷ����Ǹ���װ����ij�Ա��������ȡ���κ��ʸ������
���ڲ���ӵ�жԷ�װ������Ԫ�صķ���Ȩ�ޣ�ע�͢ڣ�������������Ӳ�ʾ���������
��
289-290ҳ����
�ڣ�����C++��Ƕ���ࡱ��������в�ͬ������ֻ��һ�ֵ������������ػ��ơ���C++��
��û��ָ��һ����װ��������ӣ�Ҳ������Ĭ�ϵķ���Ȩ�ޡ�
���У�Sequenceֻ��һ����С�̶��Ķ������飬��һ���ཫ���װ���ڲ������ǵ���ad
d()���Ա㽫һ���¶�����ӵ�Sequenceĩβ������еط��Ļ�����Ϊ��ȡ��Sequenc
e�е�ÿһ������Ҫʹ��һ����ΪSelector�Ľӿڣ���ʹ�����ܹ�֪���Լ��Ƿ�λ����
ĩβ��end()�����ܹۿ���ǰ����current() Object�����Լ��ܹ�����Sequence�ڵ���
һ������next() Object��������Selector��һ���ӿڣ�����������������������
���ķ�ʽʵ�ֽӿڣ������������ܽ��ӿ���Ϊһ���Ա���ʹ�ã��Ӷ�һ��Ĵ�
�롣
�����SSelector��һ��˽���࣬���ṩ��Selector���ܡ���main()�У���ҿɿ���S
equence�Ĵ�����̣����������һϵ���ִ��������ӡ����ͨ���getSelector()
��һ���������һ��Selector����������Sequence���ƶ���ͬʱѡ��ÿһ����Ŀ��
�ӱ��濴��SSelector�ƺ�ֻ����һ���ڲ��ࡣ����Ҫ�����������Ի���ע��۲�end
()��current()�Լ�next()������ÿ��������������o��o�Ǹ�������SSelectorһ���ֵ�
������λ�ڷ�װ�����һ��private�ֶΡ�Ȼ���ڲ�����Դӷ�װ����ʷ�������
�Σ������Ѿ�ӵ��������һ����һ������������˵�Ƿdz�����ģ����������������
���������
��ˣ���������֪��һ���ڲ�����Է��ʷ�װ��ij�Ա���������ʵ�ֵ��أ��ڲ����
��ӵ�жԷ�װ����ض������һ�����ã����װ������þ��Ǵ�������ڲ��ࡣ���
���������÷�װ���һ����Աʱ���������Ǹ������أ���������ѡ���Ǹ���Ա�����˵�
�ǣ�����������������չ�������Щϸ�ڡ�����������Ҳ��������ڲ����һ������ֻ
�����װ���һ���������ϴ������������������У�Ҫ��Է�װ�����ľ����г�
ʼ���������ܷ����Ǹ����������ͻᱨ�?����������Щ������ʱ�����ʱ��
����Ҫ�����Ա���κν��롣
7.6.4 static�ڲ���
Ϊ��ȷ���static��Ӧ�����ڲ���ʱ�ĺ��壬�����ס�ڲ���Ķ���Ĭ�ϳ��д������
�Ǹ���װ���һ������ľ��Ȼ���������˵һ���ڲ�����static�ģ�����˵��ȴ
�Dz������ġ�static�ڲ�����ζ�ţ�
(1) Ϊ����һ��static�ڲ���Ķ������Dz���Ҫһ���ⲿ�����
(2) ���ܴ�static�ڲ����һ�������з���һ���ⲿ�����
���ڴ���һЩ���ƣ�����static��Աֻ��λ��һ������ⲿ���������ڲ����ӵ��
static��ݻ�static�ڲ��ࡣ
����Ϊ�˴����ڲ���Ķ������Ҫ�����ⲿ���һ��������ô�ɽ����ж�������Ϊ
static��Ϊ����������ͬʱҲ���뽫�ڲ�����Ϊstatic��������ʾ��
291-292ҳ����
��main()�У����Dz���ҪParcel10�Ķ����෴�������ó�������ѡ��һ��static
��Ա���Ա���ý�����Contents��Destination�ķ�����
ͨ�������Dz���һ���ӿ��������κδ��룬��static�ڲ�����Գ�Ϊ�ӿڵ�һ���֡���
�����ǡ���̬���ģ��������Υ���ӿڵĹ���static�ڲ���ֻλ�ڽӿڵ������
���ڲ���
292ҳ�г���
�ڱ�����Щʱ���ҽ�������ÿ�����ﶼ����һ��main()��������Ϊ�Ǹ���IJ��Դ�
ʹ�á���������һ��ȱ����Ƕ�����������̫�ࡣ����Ը��ˣ��ɿ�����һ��static
�ڲ��������Լ��IJ��Դ��롣������ʾ��
292-293ҳ����
��������һ�������ġ���ΪTestBed$Tester���ࣨΪ���г�����ʹ�á�java TestB
ed$Tester��������ɽ���������ڲ��ԣ����������Լ������շ��а汾�а���
7.6.5 �����ⲿ�����
��������ⲿ�����ľ���Ҫ��һ������Լ�һ��this�������ⲿ�ࡣ�ٸ�������
˵����Sequence.SSelector���У�������з������ܲ����ⲿ��Sequence�Ĵ洢���
�����Dz���Sequence.this����ʽ������õľ����Զ��߱���ȷ�����ͣ�����ڱ���
�ڼ��鲢��ʵ�����Բ�����������ڵĿ���
��Щʱ���������������ijЩ������ij���ڲ����һ������Ϊ�ﵽ���Ŀ�ģ�
������new���ʽ���ṩָ�������ⲿ������һ����������������
293-294ҳ����
Ϊֱ�Ӵ����ڲ����һ�����������һ�����������������ͬ����ʽ������
���ⲿ����Parcel11����ʱ�����������ⲿ���һ����������ڲ����һ������
Parcel11.Contents c = p.new Contents();
��ˣ������ӵ���ⲿ���һ���������ܴ����ڲ����һ����������������
����Ķ�����ͬ��������ⲿ��Ķ���ĬĬ�������ӵ�һ��Ȼ��������һ��st
atic�ڲ��࣬�Ͳ���Ҫָ���ⲿ������һ�����
7.6.6 ���ڲ���̳�
�����ڲ����������ͬ��װ������һ�������ϵ��һ�����Դ�һ���ڲ���̳е�
ʱ��������������Щ���ӡ����������Ƿ�װ��ġ����ܡ��������ó�ʼ��
���������������в�����һ��Ĭ�ϵĶ���������ӡ�����������İ취�Dz���һ����
��������ȷ�������ֹ�����
294-295ҳ����
���п��Կ�����InheritInnerֻ���ڲ����������չ��û����չ�ⲿ�ࡣ������Ҫ����
һ����������ʱ��Ĭ�϶����Ѿ�û�����壬���Dz���ֻ�Ǵ��ݷ�װ�����һ�����
���⣬�����ڹ������в����������
enclosingClassHandle.super();
���ṩ�˱�Ҫ�ľ���Ա������ȷ
--
j&= y+ y* jv+ yy-v v &
wE!" j17$T 7MPC NU$E- Ej&v-
O*K^ yHH:Ovm+ UMMk BMNTO: H1="7'
jO&OH: "OH&"E~ U0H1 BB71` jCf'U:
vM1H1 jB-j1 wHhHh*-/$B)B- BkJUk
^HI'OH j""^N1 "OHOK~ H$H"Da jP'N ^
[m[1;35m�� ��Դ:���ɽ��ˮ bbs.neu.edu.cn��[FROM: 219.216.70.3][m
Technical Details
Message-ID:
<492e7e$Bm_@bbs.neu.edu.cn>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!t-online.de!news.neu.edu.cn!NEUShow Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB X-Google-Thread: f6cb0,9014141e952ea751,start X-Google-Attributes: gidf6cb0,public X-Google-ArrivalTime: 2003-10-27 17:44:12 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!t-online.de!news.neu.edu.cn!NEU From: amou.bbs@bbs.neu.edu.cn (�˺�2��) Newsgroups: cn.bbs.comp.lang.java Subject: Java���˼��---��7�� ������ Date: 28 Oct 2003 01:43:06 GMT Organization: ��ɽ��ˮ Message-ID: <492e7e$Bm_@bbs.neu.edu.cn> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit X-Filename: java/M.1067305336.A Lines: 528