黑马程序员技术交流社区

标题: 17题B选项,不理解,新人求助! [打印本页]

作者: 忘壳    时间: 2014-8-22 17:30
标题: 17题B选项,不理解,新人求助!
如附近图片:17题B选项,毕老师说因为主函数是静态的,如果访问inner需要被static修饰。我不太理解此处,请大家帮我解答疑惑,最好写出正确的代码,先在此谢谢了


QQ截图20140822172400.png (165.62 KB, 下载次数: 37)

QQ截图20140822172400.png

作者: 依然超级赛亚人    时间: 2014-8-22 17:49
本帖最后由 依然超级赛亚人 于 2014-8-22 17:57 编辑
  1. class InnerDemo
  2. {
  3.         public void func(){
  4.                 //位置1
  5.                 new Inner();
  6.         }
  7.         
  8.         static class Inner{}//加static修饰。
  9.         
  10.                 public static void main(String[] args) {
  11.                         //位置2
  12.                         new Inner();
  13.                 }
  14.         
  15.         
  16. }
  17. 内部类成员位置,就可以被成员修饰符所修饰。比如static修饰的话内部类就有了static的特性(和它修饰成员时一样)。换句话说,内部类在成员位置上就相当于成员方法一样,平时我们访问该类下的成员方法时这个方法得是静态的(非静态时可以通过创建对象调用也行,和这道题关系不大),现在访问和它类似的内部类就有相同的规矩。
复制代码

作者: c19t043    时间: 2014-8-22 19:21


首先,看位置2,首先我分析C.,D错在那
创建对象是,new +类名();
class Inner是内部类,要创建Inner,首先的创建外部类对象,即new Demo()
在有外部类对象的基础上,创建内部类,即 new Demo().new Inner()
但是,我们是在外部类里面,创建内部类,
内部类可以当做字段来处理,即代码,可以写成 this.new Inner();
在类中,我们一般都是省略了this关键字,
所以才有AB答案


作者: 0小菜鸟0    时间: 2014-8-22 21:23
首先你这个内部类是在成员位置,你可以把他看成一个成员变量,当静态方法访问成员变量时,需要加静态,
静态是优先于对象存在的,静态是属于类,不属于对象。所以内部类要加静态




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