本帖最后由 真真姐 于 2012-10-21 14:44 编辑
这个方法完全是正确的,先分析下概念啊
内部类有两种:实例内部类、静态内部类 自己总了些便于你理解!
[实例内部类中] A:不论外部类的成员的访问修饰符是哪一种,内部类都可以访问 B:一个外部类的实例可以对应很多内部类实例。在外部类中不能直接访问内部类的成员,必须通过内部类的实例去访问才可以 [静态内部类中] A:静态内部类可以直接访问外部类的静态成员,如果访问外部类的实例成员,就必须通过外部类的实例去访问。在创建内部类的实例的时候,不必创建外部类的实例.。 B:外部类可以通过完整的类名来直接访问静态内部类的静态成员,如果要访问静态内部类的非静态成员则需要创建静态内部类的一个实例才行
在实例化内部类InnerClass的时候,是在内部类以外的方法中,a是作为参数传递进去的,就像是传值一样,而在内部类里面使用的是自己的变量
不好理解的话给你个示例把
1、public InnerClass(int m){} 2、public InnerClass(int n){} 3、 public InnerClass(int x){} 4、public InnerClass(int y){}
这个方法的参数名字是自己定义的一个名字而已,写什么都不会报错
所以执行当然没问题了,但是如果不是当作传递参数,而是直接作为变量来使用的话了,那么就需要按照视频上面得来
public voidshow() { final int a = 5; //去掉final就会报错的啊 ,同时把a的初始化放到InnerClass类的后面执行也出错
class InnerClass { private int b; public InnerClass(int m) // 注意别让你的方法的参数成了障眼法,这里换成了m { this.b = a; System.out.println("是啊" + a + b); } public void show() { System.out.println(b); } } new InnerClass(b ).show(); }
手工制作,加完整分析,够给力把~
|