一个关于java IO流的问题!

[复制链接]
查看11 | 回复4 | 2010-11-24 16:02:23 | 显示全部楼层 |阅读模式
请问,在java里下面这两种声明流的区别是什么?
:InputStream in = new BufferedInputStream(new FileInputStream(file));
与BufferedInputStream in = new BufferedInputStream(new FileInputStream(file)); 的区别?这两种情况下, in 这个对象用法有什么影响?
谢谢楼上几位的回答,但都不是我需要的! 我是想知道,这两种对象 in 对效率而言,有什么区别,谁的效率更高!?

回复

使用道具 举报

千问 | 2010-11-24 16:02:23 | 显示全部楼层
二楼没用过IO不要乱讲话!InputStream不是接口,它是所有字节输入流类的父类!代码第一行是一种多态的用法,in实际是InputStream的实例,只能调用InputStream类里面的方法。第二行的in是BufferedInputStream的实例,可以调用该类里面的方法;如果想调用从父类继承过来的方法,可以用super关键字。具体用哪种要看你需要的IO操作了。
回复

使用道具 举报

千问 | 2010-11-24 16:02:23 | 显示全部楼层
这是多态问题,到网上搜一下多态就知道了,随便找的了一个(虽然很烂,但可以看)class A{
public String f(D obj){return ( "A and D ");}
public String f(A obj){return ( "A and
回复

使用道具 举报

千问 | 2010-11-24 16:02:23 | 显示全部楼层
第一种是 采用接口引用 指向 实现类 对象,所以只能调接口中定义过的方法,而第二种 可以调 实现类中所有public 的方法
回复

使用道具 举报

千问 | 2010-11-24 16:02:23 | 显示全部楼层
String a="abc";Object b = "abc";二者都是String对象,没有区别。只不过声明的类型不一样,a可以调用多一些方法而已。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行