日期:2014-05-20 浏览次数:20802 次
public class Houst { public void a(){ final int d=1; class b{ class c{ } } }
public class Houst { public static void main(String[] args) { Houst h = new Houst(); h.a(); } public void a() { System.out.println("a"); final int d = 1; class b { public void d() { System.out.println("d"); } class c { } } b bb = new b(); bb.d(); // 调用类b的的方法d() } }
------解决方案--------------------
public class T {
public void a(){
final int d = 1; //去掉final 内部类 中使用会报错
class A{ //内部类,写在方法里,其作用域,就只能在这个方法里,不能在方法外面创建
public void a(){
System.out.println("我是A类" + d);
}
class B{//作用: 为了实现特定的一个功能,防止被其他类使用(个人理解)
public void b(){
System.out.println("我是B类" + d);
}
}
}
new A().a(); //调用方式
new A().new B().b();
}
public static void main(String[] args){
new T().a();
}
}
------解决方案--------------------
先说楼主的问题:这是一个a()方法,里面嵌套了一个类b 。这个方法没法被主方法调用,你说的主方法是指main方法,不能new一个对象出来吧?
main方法是静态方法。所以你直接new是出不来,因为你首先要有a一个实例产生,内部的类才能开始使用,我说是才能使用,没说一定能使用。
如果在class a中的动态方法中是可以new 一个内部类出来,并且使用的。因为动态方法使用前,必须要有a这么一个实例。才能使用动态方法。涉及到类加载问题。
其次:其实这问题偶尔也容易方法,有的时候莫名其秒的报错,你只要注意是静态方法还是动态的就可以了,至于要不要研究,还真没什么必要