黑马程序员技术交流社区
标题:
有关外部类与内部类的问
[打印本页]
作者:
杨康
时间:
2012-5-23 04:16
标题:
有关外部类与内部类的问
当一个类中的内部类想访问外部类时,内部类可以直接访问外部类中的成员,包括私有成员。
而外部类想访问内部类成员,是通过建立内部类的对象才能访问。
我想知道的是 如果内部类的成员定义成了static,外部类能不能访问内部类中被static修饰的成员,如果能是通过怎样的形式访问的?如果不能,是为什么?
作者:
8161776
时间:
2012-5-23 07:30
本帖最后由 杨尧 于 2012-5-23 07:32 编辑
我想知道的是 如果内部类的成员定义成了static,外部类能不能访问内部类中被static修饰的成员,如果能是通过怎样的形式访问的?如果不能,是为什么?
当然能了,只要被static修饰的变量就是公共的,他不属于任何对象,他存在方法区
,
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
作者:
张泽
时间:
2012-5-23 07:44
可以,访问方式:外部类名.内部类名.成员方法();.
作者:
张成龙
时间:
2012-5-23 09:45
首先非静态内部类是不能有静态成员的,对于java类加载顺序:首先加载类,执行static变量初始化,接下来执行对象的创建。
如果我们要执行代码中的变量初始化,那么必须先执行加载外部类,再加载内部类,最后初始化静态变量。
我们可以把内部类看成外部类的非静态成员,它的初始化必须在外部类对象创建后以后进行,要加载内部类必须在实例化外部类之后完成 ,java虚拟机要求所有的静态变量必须在对象创建之前完成,这样便产生了矛盾。
静态内部类实际上已经脱离了外部类的控制,创建对象时也不再需要外部类对象的存在,实质上只是一个放置在别的类中的普通类而已。Outer.Inner.function();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2