Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Java SE 综合讨论区
打印话题 寄给朋友 订阅主题 |
作者 | An inner class access point |
arjooe
发贴: 16 积分: 0 |
于 2002-12-28 12:41
近日,读过SCJP参考文献关于内联Clsass的章节之后,写了以下一个类以验证Classes Defined Inside Methodss对enclosing class的成员变量以及成员方法中final与非final变量的accessibility。 心得1: 在inner class中,可以读包含它的方法中的final修饰的变量,其它类型的变量一概导致编译错误,final变量等同于定义它的范围内的常量,inner class在构造时会获得一份拷贝。 心得2: 大家注意,inner class 对上一层class中的非static的变量不概不认,即使修饰final也一样。 心得3: (大多数文章并未提到的)在一个捅有inner class的成员方法中,可以对该inner class实例中的任何成员变量或成员方法(即便是private)直接引用。 以下代码在Jb8+win2k+j2sdk1.4.1_01中编译通过,希望能对各位兄弟有所帮助。代码输出如下: Static outest variable Static final outest variable 4 92 234 23.111113 32423 2.938402E7 234234.0 234234.0 234234.0 package te; 代码如下: public class Example { private float f=1.2345f; private static String staticouterside = "Static outest variable"; private static final String staticfinalouterside = "Static final outest variable"; private final String outerside = "Outest variable"; static public void test(int aa,final int bb){ int i = aa + bb; final int j = aa*bb; class inner { int a = 234; short c = 32423; float d = 29384019; private double dd = 234234.; float b = 23.111112f; private void output(){ //System.out.print; cause compile error //System.out.println(outerside); cause compile error System.out.println(staticouterside); System.out.println(staticfinalouterside); System.out.println(bb); System.out.println(j); System.out.println; System.out.println; System.out.println; System.out.println; System.out.println(dd); } } inner innertest = new inner(); innertest.output(); //invoke private method double out = innertest.dd; //Note this statement, access private variable System.out.println(innertest.dd); //and this System.out.print(out); //and this } public static void main(String args[]) { test(23,4); } } Arjooe [转帖]面向对象的思维方法 |
话题树型展开 |
人气 | 标题 | 作者 | 字数 | 发贴时间 |
4386 | An inner class access point | arjooe | 2061 | 2002-12-28 12:41 |
已读帖子 新的帖子 被删除的帖子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |