Article View: cn.bbs.comp.program
Article #1264���������Ƕ��
From: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
Date: Sat, 18 Apr 1998 00:00
178 lines
12984 bytes
12984 bytes
JDK1.1���:��Ƕ��(1)
Java���ϰ汾��ֻ�ṩ�˶�����,���DZ����ǰ�ij�Ա��Ȼ������,
�°��Java1.1�������Ա������Ƕ��(inner class),���ǿ�������
����ij�Ա,���߾ֲ��ش�����һ���������,��������ش�����һ��
���ʽ�С�
���������Ƕ��ĸ���
��Ƕ�����Ҫ������:
1.�������ϸ�,��Ƕ�����������������������Ч��������
���ڰ��ڽṹ���ࡣ
2.��Ƕ��Ĵ������ʹ�ð�Χ�������еļ���,�����ࡢ��Χ
���ʵ���Ա,�Լ���Χ��ľֲ�������
��Ƕ�����ɻ�����ı�̺Ϳ�ṹ���϶�����,���ֳ����
�����ȱ�Beta��������á����ô�����Ƕ��Ŀ�ṹ,Java����Ա��
�Ը����ؽ�������ϵ����,��Ϊ��ʱ����Ա�����Ϊ��ӽ�������
��Ҫ���ƵĶ���,���ҿ���ֱ������������Ҫ�����֡����Ŷ�����
λ�õ����Ƶ����,Java������������ø�����,����ͬPascal��
Scheme��Щ��ͳ�Ŀ�ṹ������һ��
����,����Ա���Խ��ඨ��Ϊ������ľ�̬(static)��Ա����Ϊ
��̬���Ա�������Ϊ���Ա�������Ϊ�����ࡣ��������Ƕ���
�������:������ֻ��ֱ���������Լ���ʵ������������ַ�ʽʵ��
��Ƕ��������ʹ������Ϊ������ص�һ��μ��������ṩһ����
�ư����֯�ṹ,������Щ�μ�����˽�г�Ա��ȫ����дȨ�ޡ�
��Ƕ���Ƕ�������ɱ�����ʵ��,���Ҳ���Ҫ��Java�������
�κθı䡣���Dz����ƻ����ִ�Java������Դ���뼶�Ͷ����Ƽ��ϵ�
�����ԡ�
������Щ�µ�Ƕ����춼��ת���ɲ�ʹ����Ƕ���Java1.0��
�������Խ��͡���Java 1.1����������Java������ֽڴ���ʱ,��Щ
�ֽڴ������������(�����)��Դ���뵽Դ�����ת�����,�Ӷ�
ʹ��ͬ��Java1.1�����������Ķ����ƴ�����Լ��ݡ���Щ�ֽڴ�
��Ҳ�������һ�������Ա�־�Ա��������Java1.1������ָ��ÿ��
Ƕ����Ĵ��ڡ��⽫�������һ�����ۡ�
�Ľӿ������
�������������һ���ӿ��ࡣ���������ָ����һ�ִ����һ��
�������䱾��Ľ������������շ������á�Ϊ���ܽ�������AWT��J
avaBean�������¼�,�ӿ���ͨ��������Ҫ�ġ���Java1.1��,�ӿ�����
���ױ�����Ϊ��Ƕ��,������Ҫ�ӿڵ����С�
������һ�����������FixedStack,��ʵ��һ����ջ,���ҿ�����
�����¶�ջ�е�Ԫ�ؼ���:
public class FixedStack {
Object array[];
int top = 0;
FixedStack ( int fixedSizeLimit ){
array = new Object [fixedSizeLimit];
}
public void push ( Object item ){
array [top++] = item;
}
public boolean isEmpty( ) {
return top = 0;
}
// other stack methods go here...
class Enumerator implements java.util.Enumeration
int count = top;
public boolean hasMoreElements( ) {
return count > 0;
}
public Object nextElement( ) {
if (count == 0 )
throw new NoSuchElementException( "Fix" );
return array[- - count];
}
}
public java.util.Enumeration elements( ) {
return new Enumerator( );
}
}
�ӿ�java.util.Enumeration��������һϵ��ֵ��ͻ�������Fix
edStack����(���Ҳ�Ӧ��!)ֱ��ʵ��Enumeration�ӿ�,���������Ҫ
һ���ӿ�������Enumeration����ʽ������һϵ��Ԫ�ء���Ȼ,�����
������Ҫ�߱���д��ջ����Ԫ�ص�ij��Ȩ�ޡ�������Ա������ӿ�
��Ķ��������FixedStack��,��ýӿ���Ĵ������ֱ�����ö�ջ
�����ʵ�������
��Java������,��ķǾ�̬��Ա���Ի�������,�������Ƕ�������
��ǰʵ��this��صĺ��塣���,��FixedStack��ʵ�����array����
Ϊʵ��push������,Ҳ��������Ƕ��Fixe dStack.Enumerator��
������������á�����ʵ������嶼"֪��"�䵱ǰʵ��thisһ��
,�κ�һ����Enumerator�������Ƕ���еĴ���Ҳ��"֪��"���Χʵ
��,������array����ı�����ȡ�Եİ�Χ���ʵ��
�������FixedStack�������ԭ��֮һ����FixedStack�IJ�����
�����Ƕ��Enumerato r֮�����һ��������������һϵ�е���ջ��
��ջ�����ڶ�nextElement�����ε���֮�䷢��ʱ,����ֵ���ܺ��ϴ�
�ļ���ֵ��,�������ܷ��ش��ڵ�ǰջβ֮���"����ֵ"������Ա
�����η�ֹ���־����������������,���߽������������ʹ����
���ĵ��������Ƿ�ֹ���־����һ�ַ���:
public class FixedStack {
...
synchronized public void push ( Object item ) {
array[top++] = item;
}
class Enumerator implements java.util.Enumeration
...
public Object nextElement( ) {
synchronized ( FixedStack.this ) {
if ( count > top ) count = top;
if ( count == 0 )
throw new NoSuchElementException ("Fix");
return array[- - count];
}
}
}
���б��ʽFixedStack.thisָ���ǰ�Χʵ��
�ֲ������
��һ���౻�����һ�����еľֲ���ʱ,����Զ�дͬһ���е�
һ����ʽ�������õ�һ����ơ�������һ������:
Enumeration myEnumerate ( final Object array[]) {
class E implements Enumeration {
int count = 0;
public boolean hasMoreElements( )
{ return count < array.length; }
public Object nextElement( )
{ return array[count++]; }
}
return new E( );
}
��������δ�����,Java�����������ͱ�������ѧ����õ���
ȷ���֡������ڷ���my Enumerate����֮��,array���ܱ���Ƕ������
����,������C����������"�뿪"�ˡ��෴,���ֵ�����ڰ�����E��
�����������ڵ��κ���Ҫ�ĵط��������á�
ע������ģʽ(final)����������array����ľֲ�����ģʽ����
��Java1.1��һ�����ص㡣ʵ����,���һ�����еľֲ�������ֲ���
��Ҫ����һ����(����Ƕ��)������,��ô����뱻����Ϊ����ģʽ��
����DZ�ڵ�ͬ������,û�а취ʵ�������������ͬһ�ɱ�ֲ���
���Ķ�д��״̬����count���ܱ���Ϊ�ֲ�����,��ǽ����ΪһԪ��
��,������ʾ:
Enumeration myEnumerate ( final Object array[]) {
final int count[]= 0; // final reference
class E implements Enumeration {
public boolean hasMoreElements( )
{ return count[0] < array.length; }
}
}
�̳кʹʻ�������������ʱ���ܻ������Ի�����,�����E��
Enumeration�̳���һ�����array����,����Ѱ�Χ�������е�
ͬ������ڲص���Ϊ�˷�ֹ���ֶ�����,Java 1.1���?�̳е�����
�ص���Щ�ڰ�Χ����Χ���������ڶ����ͬ�����,���ǽ�ֹ����
�ڲ��߱���ʽ���ʸ�ʱ�����á�
������
�������������,�ֲ�����E����û�л��߿���˵��ȫû�����Ӵ�
�������ȡ����ⲻ������̫��:һ���ٳ�������Ҳ����ʹά����ɨ
һ����������������е����ݡ�Ϊ�˹��쾡���ܼ��ķdz�С�Ľӿ�
��,Java1.1����ʹ�þֲ��������д��ʾ��һ�ּı��ʽ�ķ���
������Ķ����ʵ��ķ�������,������ʾ:
Enumeration myEnumerate ( final Object array[]) {
return new Enumeration( ) {
int count = 0;
public boolean hasMoreElements( )
{ return count < array.length; }
public Object nextElement( )
{ return array[count++]; }
};
}
һ���˵,һ��new���ʽ(ʵ����ʽ)������������Ϊ����
������������ʹ����( ��ӿ�)��new��־֮������,���Ҹ�ݸ��
�����������������(��ʵ����)���������������Ƕ��ͬ����Ա��
��ǰ��������һ�����־ֲ����������ͬ������塣
�������������뱣�ּ����Ա������Ƕ��������ȷ
ʹ��,���DZ�����һ�����ֵľֲ����ӿ����������ά��
��
���һ�����������һ�������ϵĿ�ִ�д���,��ô�����˼��
���ܲ����Զ����,���Ӧ�ø�����ͨ��һ���ֲ��������ʵ��
һ�������Եľֲ���ơ�
����������г�ʼ������,�������й��������ص�new���ʽ
�ı�Ԫ��(��Ϊ��)��ʽ�ش��ݸ���Ĺ������
����ǰ������ʾ��һ��,������������ɽӿ�I���������,��ô
��ʵ�ʵ��ϼ�����Obje ct,������ʵ��I�����չ֮(��ʽ��implemen
ts�Ӿ��ǷǷ���)�����ǽӿ�����ܺϷ��ط��ڹؼ���new�����Ψһ
�����������������,��Ԫ��������ǿյ�,�Ա���ʵ�ʵ��ϼ���Obje
ct�Ĺ��������ƥ�䡣
--
[m[1;32m�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn][m
Technical Details
Message-ID:
<3O9iUA$t14@bbs.nju.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB X-Google-Thread: fc86e,953f38170fc02819,start X-Google-Attributes: gidfc86e,public From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ) Subject: ���������Ƕ�� Date: 1998/04/18 Message-ID: <3O9iUA$t14@bbs.nju.edu.cn> X-Deja-AN: 345408776 X-Filename: Programming/M.892912042.A Organization: nju_bbs Newsgroups: cn.bbs.comp.program