黑马程序员技术交流社区

标题: 老毕视频中的一点疑问 [打印本页]

作者: 邵新瑜    时间: 2012-12-12 18:35
标题: 老毕视频中的一点疑问
老毕说:当外部类的静态方法访问内部类时,内部类一定要是静态!但是我用一下方法调用,内部类可以不是静态!
class Outer
{
     class Inner1
{
  public void show()
  {
   System.out.println("Inner1");
  }
}
public  static void  function()
{
  new Outer().new Inner1().show();
}
}
class day01
{
public static void main(String[] args)
{
  Outer.function();
}
}

作者: 邵天强    时间: 2012-12-12 19:59
哥哥,那句话你理解的有误,对于静态方法只要类以加载,内存就会给它开辟一份空间
你想想此时有对象吗,你题目中的内部类是成员内部类,他就相当于外部类的成员,你想想
外部类的静态方法能访问外部类的非静态成员吗,而你现在直接把它的对象创建出来了,
那当然能够访问了,例如:如果你定义一个Person类,在测试类的静态方法中你创建了
Person类的对象,你想想能不能访问。毕老师的那句话是说:外部类的静态方法要想访问其他成员
,其他成员必须是静态的。
打个比喻:
public class Outer{
   private String name;
   public void test2(){
   }
   public static void test1(){
     //此时能访问name和test2()吗?要想访问必须是静态的
     //而你上面你直接创建了对象,那就不说了
     new Outer().test2();
  }
}
你上面定义的内部类就相当于外部类的成员,与上面的类似
作者: 罗会涛    时间: 2012-12-12 22:36
??
你不是没有调用内部类吗,调的不是外部类静态方法吗?
作者: 邵新瑜    时间: 2012-12-13 00:44
邵天强 发表于 2012-12-12 19:59
哥哥,那句话你理解的有误,对于静态方法只要类以加载,内存就会给它开辟一份空间
你想想此时有对象吗,你 ...

这个我知道哇,我的意思是老毕说的不清楚,他说内部类必须要静态,这是他的话不严谨嘛
作者: 冯超    时间: 2012-12-13 10:27
吹毛求疵的话就别说了·指出可见 把自己见解说出来。
作者: brian    时间: 2012-12-18 20:18
1楼正解{:soso_e130:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2