黑马程序员技术交流社区
标题: 基础测试的三道选择题 [打印本页]
作者: 冷锋也温柔 时间: 2014-9-15 13:06
标题: 基础测试的三道选择题
25:有如下代码,请问哪些是正确的?()
class ClassA{}
class ClassB extends ClassA{}
class ClassC extends ClassA{}
以及
ClassA p0 = new ClassA();
ClassB p1 = new ClassB();
ClassC p2 = new ClassC();
ClassA p3 = new ClassB();
ClassA p4 = new ClassC();
A:p0 = p1;
B:p1 = p2;
C:p1 = (ClassB)p3;
D:p2 = (ClassC)p4; 答案ACD求解释
15:下列程序的运行结果是:()
class Fu
{
public void show()
{
System.out.println("fu show");
}
}
class Zi extends Fu
{
public void show()
{
System.out.println("zi show");
}
public void method()
{
System.out.println("zi method");
}
}
class Test
{
public static void main(String[] args)
{
Fu f = new Zi();
f.method();
}
}
A:fu show
B:zi show
C:编译报错 这个是因为Fu类没有method,无法通过编译吗
D:zi method
1. 下面程序的运行结果是( )
FileOutputStream fos = new FileOutputStream(“c:\\demo.txt”);
fos.write(“abc”);
fos.close();
a) 在C盘创建文件demo.txt,但文件是空的
b) 在C盘创建文件demo.txt,并写入数据abc
c) 将C盘已有的文件demo.txt中追加写入abc
d) 编译失败 这个。。。不知道问题出哪了
作者: MR.Sun 时间: 2014-9-15 15:56
这个不是传智的基础测试选择题么。。。。
作者: Fightin黑马 时间: 2014-9-15 17:29
A:p0 = p1; 另p1的引用赋值给p0 因为p0是ClassA 的对象,p1是ClassA的子类ClassB的子类对象.这里可以编译通过,父类引用指向子类对象
B:p1 = p2;p1是ClassB的子类对象 p2是ClassC的子类对象 在实例化对象时并没有使用父类引用指向子类对象,你不能直接让类型ClassB的对象指向ClassC的实例对象
C:p1 = (ClassB)p3; p3 是父类引用指向子类对象,如果让ClassB指向p3 那么p3 必须转换为ClassB类型才能成功指向method()是子类特有的方法,父类不能访问,如果想访问的话可以
D:p2 = (ClassC)p4; 理由同上
第二题 在多态中父类引用指向子类对象时只能访问父类中有的方法,Zi z=(Zi)f,这样就可以用z来调用子类特有的方法了
第三题FileOutputStream fos = new FileOutputStream(“c:\\demo.txt”); FileOutputStream 是一个字节流, fos.write(“abc”);用字节流直接写字符串是会编译报错的,如果想写字符串可以使用字符流Writer ,只要是Writer的子类都有直接写字符串的功能
作者: 花开彼岸天 时间: 2014-9-15 17:43
FileOutputStream fos = new FileOutputStream(“c:\\demo.txt”);
作者: waterloocode 时间: 2014-9-15 17:44
我就说一下第一题,其实就是继承中存在的转型。子类可以直接向上转型成父类。而父类转型成子类,一方面要有相关定义如 Fu f = new Zi();才能进行转型z = (Zi)f;
作者: fouraa 时间: 2014-9-15 18:02
第一个acd
作者: 冷锋也温柔 时间: 2014-9-15 20:40
哦哦 懂了:lol 谢谢啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |