public class Houst {
public void a(){
final int d=1;
class b{
class c{
}
}
}以上的代码是从教科书上找的,这是一个a()方法,里面嵌套了一个类b 。这个方法没法被主方法调用。
我认为一个方法既然没法被主方法调用,那么这个方法就是一个失败的方法,因此这段代码毫无意义。
我舍友则认为它是有一定的用的,只不过他也不知道怎么用。所以我来请教各位,如果各位觉得这段代码毫无用处,那么我就不去研究它能干什么了。
如果有用,还请各位耐心指教。
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 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();
}
}
main方法是静态方法。所以你直接new是出不来,因为你首先要有a一个实例产生,内部的类才能开始使用,我说是才能使用,没说一定能使用。
如果在class a中的动态方法中是可以new 一个内部类出来,并且使用的。因为动态方法使用前,必须要有a这么一个实例。才能使用动态方法。涉及到类加载问题。
其次:其实这问题偶尔也容易方法,有的时候莫名其秒的报错,你只要注意是静态方法还是动态的就可以了,至于要不要研究,还真没什么必要