A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuzeshui 中级黑马   /  2016-1-19 21:22  /  651 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这道题我觉得该是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()

9 个回复

倒序浏览
这是个bug把,,,,b和c都对的啊
回复 使用道具 举报
b和c都对的
回复 使用道具 举报
a和c 应该都可以啊
回复 使用道具 举报
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()         //错误,外部调用内部类的方法,必须调用外部类。
回复 使用道具 举报
C怎么对了?连new都没有,就写个 类名.类名.方法名 你就能创建出对象来?
回复 使用道具 举报
不选AD说明楼主对static关键字掌握的不错,可这里是要填代码,C选项的完全格式就是B选项,简化格式应该是new Outer.Inner.print();
回复 使用道具 举报
这是一道多选题。
回复 使用道具 举报
选B吧!
C里面第一个类没实例化就直接出来不行的
回复 使用道具 举报
选C静态方法调用不用创建对象,根本不用new直接Inter.print  
B没有用静态的方式访问静态方法,虽然编译没错,但是用法是错误的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马