免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7301 | 回复: 11
打印 上一主题 下一主题

inputstream中read()的实现? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-10 14:55 |只看该作者 |倒序浏览
最近看了看j2sdk1.4.2的源码,有个地方很不明白,请高人指点

inputstream是个抽象类,其中对有个抽象方法read().

filterinputstream继承了inputsteam类,对read()方法进行了实现。代码如下:
public
class FilterInputStream extends InputStream {

    protected InputStream in;
    protected FilterInputStream(InputStream in) {
        this.in = in;
    }

    public int read() throws IOException {
        return in.read();
    }
在read()方法中只是调用成员in(inputsteam)的read(),具体的实现在那?不明白!!!!

论坛徽章:
0
2 [报告]
发表于 2005-05-10 15:06 |只看该作者

inputstream中read()的实现?

关注!

论坛徽章:
0
3 [报告]
发表于 2005-05-10 20:42 |只看该作者

inputstream中read()的实现?

FilterInputStream的构造函数的参数可以是InputStream的任何一个子类的对象,所以read方法的实现是在这个传入的对象的类里面定义的。

论坛徽章:
0
4 [报告]
发表于 2005-05-11 10:07 |只看该作者

inputstream中read()的实现?

从filterinputstream的构造函数定义中可看出传入的对象是inputstram的一个引用。但是inputstream正是因为存在抽象方法read()所以是抽象类,也就是说inputstream中并没有给出read()的实现。filterinputstream继承了inputstream并且不是抽象类,隐含意义就是在filterinputstream中定义了它继承的抽象方法read()的具体实现。但是我们从定义中:
public int read() throws IOException {
return in.read();
   }
看出它的实现就是调用成员in(inputstream的一个引用)的read()方法,即inputstream中的方法read()。然而inputstream中的方法read()是抽象的?
实际的实现并没有发现!!

论坛徽章:
0
5 [报告]
发表于 2005-05-11 13:31 |只看该作者

inputstream中read()的实现?

楼上:

注意一下一个事实:

子类可以赋给父类的引用,
只要传进去的in是一个继承了inputstream,并实现了read()方法的子类,不就可以了嘛

呵呵,不知道我说明白了没有。

论坛徽章:
1
丑牛
日期:2015-01-07 15:25:00
6 [报告]
发表于 2005-05-11 14:12 |只看该作者

inputstream中read()的实现?

不要空口谈理论,找个实在的例子先

论坛徽章:
0
7 [报告]
发表于 2005-05-11 14:26 |只看该作者

inputstream中read()的实现?

我??

呵呵
我以为我说的很清楚呢。


  1. Class MyInputStream extends InputStream{
  2. ............
  3. public int read(){
  4. ..........
  5. ..........
  6. reture result;
  7. }
  8. }
复制代码

  1. InputStream myIn=new MyInputStream();
  2. FilterInputStream x=new FilterInputStream(myIn);
  3. x.read();
复制代码

论坛徽章:
0
8 [报告]
发表于 2005-05-11 16:01 |只看该作者

inputstream中read()的实现?

“继承”是OOP的最基本组成元素

论坛徽章:
0
9 [报告]
发表于 2005-05-11 16:47 |只看该作者

inputstream中read()的实现?

谢谢!的确源码是根据多态性来实现的。
由于java中以ojbect为类的根节点,所以实际上的实现
是在objectinputstream中通过内部类BlockDataInputStream来实现!

论坛徽章:
0
10 [报告]
发表于 2005-05-11 19:55 |只看该作者

inputstream中read()的实现?

不是仅限于BlockDataInputStream吧?
应该是任何InputStream的非抽象子类都是可以的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP