黑马程序员技术交流社区

标题: 内部类小问 [打印本页]

作者: 葛晓东    时间: 2014-5-30 00:38
标题: 内部类小问
本帖最后由 葛晓东 于 2014-6-3 23:46 编辑

为什么非静态内部类的方法不能为静态?
作者: Hi天天向上    时间: 2014-5-30 01:11
首先,这个是Java语言规范规定的内容。其次,你可以想象一下如何去指向这个静态成员。非静态内部类是通过外部类的this指针指向的。那么对于非静态内部类的动态成员,可以通过两个this指针确定位置。但是如果允许静态成员会出现什么情况?首先,静态成员是不能通过任何this指针的,但是为了确定这个成员,必须确定这个成员所在的类实例。但是这个实例必须通过一个this指针确定。这在语法以及处理上都会造成很大的麻烦。--网上搜的

我的想法:Java 中的静态成员可以不用类的对象实例就可以被访问,定义为类的内部类如果不是声明为静态的内部类,那么创建外部类的实例对象的时候就会一起初始化内部类,既然非静态的内部类无论如何都一定会被初始化,那么静态成员就没有任何意义了。希望有帮助
作者: java木    时间: 2014-5-30 01:16
静态比非静态先存在。
作者: 葛晓东    时间: 2014-5-30 22:05
Hi天天向上 发表于 2014-5-30 01:11
首先,这个是Java语言规范规定的内容。其次,你可以想象一下如何去指向这个静态成员。非静态内部类是通过外 ...

有点感觉了  我再看看老师讲的   
作者: yang1352546    时间: 2014-5-30 22:12
非静态内部类的调用必须现有对象,才可以调用它中的变量和方法,但是静态成员变量的事在对象之前出现的,这里就出现了矛盾。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2