黑马程序员技术交流社区
标题: 哪位大神能给看下这道题 [打印本页]
作者: 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 |