A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 嘎路的米 中级黑马   /  2015-6-11 19:43  /  782 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

先别急着运行,先猜猜看代码是否正确,是否能够编译通过。如果编译通过,运行结果又是什么
  1. class Wai{
  2.         static final int y = 6;
  3.        
  4.         class Nei{
  5.                
  6.                 static final int y = 3;
  7.                 void show(){
  8.                         System.out.println(y);
  9.                 }
  10.         }
  11. }

  12. public class Demo {
  13.         public static void main(String[] args) {
  14.                 new Wai().new Nei().show();
  15.         }
  16. }
复制代码

6 个回复

正序浏览
可以a,结果是3,就把Nei当作写在Wai外面的,但是只能功Wai使用
回复 使用道具 举报
编译失败吧。内部类中如果包含静态成员,则内部类也必须声明为静态。
回复 使用道具 举报
应该可以吧
回复 使用道具 举报
可以啊,楼上说的很好啊
回复 使用道具 举报
shuaiqi_P_D 发表于 2015-6-11 20:46
可以的。匿名外部类创建匿名内部类,调用内部类的方法。JDK8 以后可以不用加 final ...

内部类中的y不加final会编译错误。内部类中如果存在静态的成员,那么内部类必须也要是静态的。
静态常量除外
回复 使用道具 举报
可以的。匿名外部类创建匿名内部类,调用内部类的方法。JDK8 以后可以不用加 final
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马