1.静态内部类不能直接访问外部类的非静态成员,不是说内部类都不能直接访问外部属性吗?(上一章)并且是说静态内部类可以直接访问外部静态成员?
2.静态内部方法中如果要调用外部类的属性,就用外部类名.属性吗?上一章不是外部类名.this.属性名吗?
成员就是属性,你问的问题很好,我突然感觉我自己都不是很清楚了。有了这些想法,你可以自己去IDE中去试一下啊,不太清楚的地方再去百度。
我个人的理解大约是这样的。静态的内部类是不能调用外部类非静态的成员;静态内部类可以直接访问外部静态成员;成员内部类可以调用外部类的不论是静态的还是非静态的成员。
静态内部类只能调用外部类的静态属性,直接属性名就可以了,也可以外部类名.属性。
外部类名.this.属性名调用的是静态内部类的非静态成员,应该是这样。
个人的理解不知道对不对:
在创建普通内部类的实例时候,连带外部类实例一起创建了,所以有了外部类的普通成员。
而在创建静态内部类实例的时候,不需要创建外部类的实例,所以外部类的普通成员自然也就不存在,所以无法访问。只能访问那些不需要实例也可以访问的静态成员。
楼主你是不是说错了
1,内部类是可以直接访问外部类的成员
2,而静态内部类则不能访问外部类的非静态成员,但是可以直接访问外部类的静态成员,就像主函数不能直接访问非静态成员一样
3,静态内部类的方法中如果要调用外部类非静态属性只有通过对象名.属性来调用