黑马程序员技术交流社区
标题:
关于一个内部类的问题~
[打印本页]
作者:
yogaa
时间:
2014-4-22 20:41
标题:
关于一个内部类的问题~
无法通过啊,运行报错!
代码如下:
1 public class Outer{
2 public void someOuterMethod(){
3 new Outer.Inner();
4 }
5 public class Inner{
6 public void InnerMethod(){
7 System.out.println("im InnerMethod");
8 }
9 }
10 public static void main(String[] args){
11 Outer.Inner inner = new Outer.Inner();
12 inner.InnerMethod();
}
}
为什么第三行new可以,第11行new就报错啊?求大神解释~
作者:
谢振宣
时间:
2014-4-22 21:22
public class Outer
{
public void someOuterMethod()//此方法是非静态的,既可以访问静态,也可以访问非静态
{
new Outer.Inner();
}
public static class Inner//由于主函数是静态的,静态只能访问静态,此处的内部类要定义为static
{
public void InnerMethod()
{
System.out.println("is InnerMethod");
}
}
public static void main(String[] args)
{
Outer.Inner inner = new Outer.Inner();
inner.InnerMethod();
}
}
复制代码
作者:
晴天_SH
时间:
2014-4-23 14:31
首先你定义的内部类是非静态的成员内部类,所以在使用时必须是通过对象来访问,或者你把成员内部类的定义成静态通过类名访问也可以,假如我使用前者则代码如下
public class Outer
{
public void someOuterMethod(){
new Inner(); }
public class Inner{
public void InnerMethod(){
System.out.println("im InnerMethod");
}
}
public static void main(String[] args){
Outer.Inner inner = new Outer().new Inner();
inner.InnerMethod();
}
}
作者:
悠然丶
时间:
2014-4-23 16:39
总结一下:
内部类定义在成员位置上,就是成员内部类.成员内部类可以被成员修饰符修饰!比如:public ,static,private等
如果成员内部类的方法被static修饰,那么成员内部类也要被static修饰
内部类定义在局部,也就是在方法中,就称之为局部内部类,!如果局部内部类想访问方法中的局部变量,这个局部变量
必须是被final修饰的,.
作者:
微笑=.一瞬间
时间:
2014-4-25 21:02
通过类明直接调用的话需要类中的成员是静态的 就是说如果按你的 Outer.Inner inner = new Outer.Inner();这种方法调用 需要Inner类是静态的也就是需要static 修饰
作者:
酱油炒饭
时间:
2014-4-26 00:06
路过学习学习~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2