黑马程序员技术交流社区

标题: 哪位大神能给看下这道题 [打印本页]

作者: wuzeshui    时间: 2016-1-19 21:22
标题: 哪位大神能给看下这道题
这道题我觉得该是BC,但是题目说的是单选,搞不懂,哪位大神能给分析一下
请在____处补齐下列程序的代码( -----------------单选
class Demo1_InnerClass{
           public  static void  main(String[]  args){
                    //补齐代码
}
}
class  Outer{
           static  class Inner{
                    public  static void  print(){
                             System.out.println(“print”);
}
}
}
A.     Inner  oi =  new  Outer.Inner();oi.print();
B.     Outer.Inner  oi =  new  Outer.Inner();oi.print();
C.     Outer.Inner.print();
D.     Inner.print()


作者: jacky左    时间: 2016-1-19 22:38
这是个bug把,,,,b和c都对的啊
作者: shihao    时间: 2016-1-20 00:13
b和c都对的
作者: 梁志斌    时间: 2016-1-20 00:53
a和c 应该都可以啊
作者: Mayer    时间: 2016-1-20 13:54
Inner为静态内部类,print()为静态内部类的静态方法。
A.     Inner  oi =  new  Outer.Inner();oi.print(); //错误  
生成(new)一个静态内部类不需要外部类成员,静态内部类的对象可以直接生成:Outer.Inner in=new Outer.Inner();而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类。可以定义私有静态内部类。

B.     Outer.Inner  oi =  new  Outer.Inner();oi.print();//正确
C.    Outer.Inner.print();  //正确, 调用静态内部类的静态方法,可以用外部类名.内部类名.静态方法();
D.    Inner.print()         //错误,外部调用内部类的方法,必须调用外部类。

作者: 放养的饼干    时间: 2016-1-20 18:18
C怎么对了?连new都没有,就写个 类名.类名.方法名 你就能创建出对象来?
作者: 放养的饼干    时间: 2016-1-20 18:23
不选AD说明楼主对static关键字掌握的不错,可这里是要填代码,C选项的完全格式就是B选项,简化格式应该是new Outer.Inner.print();
作者: shijialong1111    时间: 2016-6-18 08:47
这是一道多选题。
作者: 小雨皮    时间: 2016-6-18 16:17
选B吧!
C里面第一个类没实例化就直接出来不行的
作者: sgzqsw    时间: 2016-6-19 10:56
选C静态方法调用不用创建对象,根本不用new直接Inter.print  
B没有用静态的方式访问静态方法,虽然编译没错,但是用法是错误的。




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