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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冷锋也温柔 中级黑马   /  2014-9-15 13:06  /  1648 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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) 编译失败   这个。。。不知道问题出哪了

6 个回复

倒序浏览
这个不是传智的基础测试选择题么。。。。
回复 使用道具 举报
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的子类都有直接写字符串的功能
回复 使用道具 举报
FileOutputStream fos = new FileOutputStream(“c:\\demo.txt”);
回复 使用道具 举报
我就说一下第一题,其实就是继承中存在的转型。子类可以直接向上转型成父类。而父类转型成子类,一方面要有相关定义如 Fu f = new Zi();才能进行转型z = (Zi)f;
回复 使用道具 举报
fouraa 来自手机 中级黑马 2014-9-15 18:02:17
地板
第一个acd
回复 使用道具 举报
Fightin黑马 发表于 2014-9-15 17:29
A:p0 = p1;  另p1的引用赋值给p0  因为p0是ClassA 的对象,p1是ClassA的子类ClassB的子类对象.这里可以编译 ...

哦哦 懂了:lol  谢谢啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马