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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苏乞儿 中级黑马   /  2014-10-11 10:46  /  1049 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Out{
  2.         int a=1;
  3.         public void method(){
  4.                 int a=2;
  5.                 System.out.println("外部类方法运行。");
  6.         }
  7.         class In{
  8.                 int a=3;
  9.                 public void method(){
  10.                         int a=4;
  11.                         System.out.println("内部类方法运行。。。"+Out.this.a);
  12.                 }
  13.         }
  14. }
  15. class OutIn{
  16.         public static void main(String[] args) {
  17.                
  18.                 Out.In in=new Out().new In();//前边的Out.In这时什么格式?我的内部类也没有用静态修饰啊??????
  19.                
  20.                 in.method();
  21.         }
  22. }
复制代码
如上,如果局部内部类加static修饰的话是 Out.In in=new Out.In();建立对象。但是现在没有用static修饰成员内部类,为什么还用Out.In in??????

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

2 个回复

倒序浏览
Out.In是外部类引用内部类的格式,而不类引用静态变量的方式。此时你定义的内部类是一个类型,还不是一个成员变量,对象成员什么的。。。再者定义内部类也不能使用static关键字
回复 使用道具 举报
面具猴 发表于 2014-10-11 10:56
Out.In是外部类引用内部类的格式,而不类引用静态变量的方式。此时你定义的内部类是一个类型,还不是一个成 ...

嗯,知道了,局部内部类是不能被static修饰的。。。那就是说外部类引用内部类的方式和外部类引用静态成员内部类的格式都是一样的了,都是Out.In ?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马