a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 51|回复: 0

[JAVA] 2011年计算机等考二级JAVA学习精华整理(32)

[复制链接]
发表于 2012-7-31 22:04:26 | 显示全部楼层 |阅读模式
1.2.4 在方法中定义内部类  如下所示代码为在方法内部定义一个内部类:
, s1 Y4 q& S* F7 {' h- x( y  public class FunOuter {. A6 A% T2 K) E& c* Q# B
  int out_x = 100;: j1 v& U, N6 L" `" l/ ]
  public void test(){% W0 s- F  [2 j5 \9 U- d
  class Inner{/ B: o4 E* O' _0 S5 L6 m/ G. w
  String x = "x";
4 M& z1 E% _  S8 T+ d+ p, z  void display(){
) s; }( O% l* G/ {5 V  System.out.println(out_x);9 c- m% O' p7 [+ C& b; S
  }) q1 P" Z% L1 l1 M" B- N
  }
5 a7 C, D6 a) J0 f, g  Inner inner = new Inner();  r6 n8 ]5 b% s
  inner.display();
1 Y& O$ F" z/ X1 i5 y& T  }
4 Z4 U/ E2 f8 \9 d; A  public void showStr(String str){. l5 y9 `+ C* P. f8 K
  //public String str1 = "test Inner";//不可定义,只允许final修饰% X2 Q2 w5 r/ p( \. p! p3 N! \
  //static String str4 = "static Str";//不可定义,只允许final修饰
+ v  Q2 h& m7 j0 l  String str2 = "test Inner";9 i. e, R# o/ w7 Q/ `7 t
  final String str3 = "final Str";
( h2 K8 m) E& q# Y% Y$ j$ l  class InnerTwo{7 H! _" p; |; ]- Z3 U
  public void testPrint(){2 Y- `% z6 _( N6 {; c# |
  System.out.println(out_x);//可直接访问外部类的变量
% n( H% \$ x4 g5 k2 d8 y2 x  //System.out.println(str);//不可访问本方法内部的非final变量
' R" p  b. }( x: O) {  //System.out.println(str2);//不可访问本方法内部的非final变量: K  i( P) J1 z1 @7 J5 j5 u
  System.out.println(str3);//只可访问本方法的final型变量成员
2 C$ {/ ~" Q* L3 z, L8 b  }
" x7 Y. U/ i; t2 D  }
: K* F; W* i2 A6 U) {$ T3 Y  InnerTwo innerTwo = new InnerTwo();
9 H. D: T& u$ f9 Y$ w  innerTwo.testPrint();5 d, r4 X0 C8 Q, ?3 g
  }
( _( c' T& ]( E9 K7 @& B1 E. {* v  public void use(){
7 L0 ?" K. p; ]* I* X' d8 h  //Inner innerObj = new Inner();//此时Inner己不可见了。
3 ~! S, Z# C* |+ m  //System.out.println(Inner.x);//此时Inner己不可见了。
0 e6 v" G& s! I1 O! G3 m  }/ }5 `( t+ B! m" y4 A. O9 j9 V
  public static void main(String[] args) {
( k6 y; u# ]0 X2 P, p  FunOuter outer = new FunOuter();0 `* o4 |5 E4 R9 ]7 {: @
  outer.test();
4 d: k) _2 O) M3 V- j3 L) K. F  }
1 K3 b0 Y' F# Q) a& k  }
5 X. v/ m# \+ n4 B4 d, f* \# b0 H  从上面的例程我们可以看出定义在方法内部的内部类的可见性更小,它只在方法内部/ }; g$ H! a; l: u0 ^
  可见,在外部类(及外部类的其它方法中)中都不可见了。同时,它有一个特点,就是方法* q: @& @! F: A7 g2 ]
  内的内部类连本方法的成员变量都不可访问,它只能访问本方法的final型成员。同时另一个
) m4 p; J& A$ m( Z* E+ n  需引起注意的是方法内部定义成员,只允许final修饰或不加修饰符,其它像static等均不可用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-19 00:36 , Processed in 0.274653 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表