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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zcbyzcb 中级黑马   /  2013-8-6 11:34  /  1361 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-8-7 18:03 编辑

记得毕老师在讲内部类的时候说,外部类的静态方法在访问内部类时,内部类也必须是静态的,个人感觉写的不是很精确。可以通过先创建对象,再访问,如 new Outer().new Inner(), 或者应该说成,外部类的静态方法在直接访问内部类时,内部类应是静态的。
举例吧
  1. class Test
  2. {
  3.         class Person
  4.         {
  5.                 private int age;
  6.                 private String name;
  7.                 Person()
  8.                 {
  9.                         
  10.                 }
  11.                 Person(int age)
  12.                 {
  13.                         this.age=age;
  14.                 }
  15.                 Person(int age, String name)
  16.                 {
  17.                         this(age);
  18.                         this.name=name;
  19.                 }
  20.                 public String toString()
  21.                 {
  22.                         return name+"::"+age;
  23.                 }
  24.                 public void show()
  25.                 {
  26.                         System.out.println("I'm superMan");
  27.                 }
  28.                
  29.         }
  30.         public static void test()
  31.         {
  32.                 Test.Person p1=new Test().new Person();
  33.         }
  34. }
复制代码
静态方法test,通过先创建对象再访问内部类。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

4 个回复

倒序浏览
内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。

*内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。

注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。所以内部类的成员变量/方法名可以和外部类的相同。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
呵呵,确实是这样的。毕老师的意思就是当外部类静态成员方法直接访问内部类时,该内部类应该是静态的。只是他说的不够精确,你理解就行。
看你这么喜欢追求细节,问你个问题,你知道为什么内部类中如果定义了静态成员,该内部类必须是静态的吗?先自己想想,然后参考一下我的总结:http://blog.csdn.net/taooattao/article/details/9632685
大家一起进步!

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
taotao 发表于 2013-8-6 13:33
呵呵,确实是这样的。毕老师的意思就是当外部类静态成员方法直接访问内部类时,该内部类应该是静态的。只是 ...

是这么个道理
回复 使用道具 举报
taotao 发表于 2013-8-6 13:33
呵呵,确实是这样的。毕老师的意思就是当外部类静态成员方法直接访问内部类时,该内部类应该是静态的。只是 ...

因为静态优先进内存吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马