文档里面说了,InputStream是抽象类。
那为什么可以InputStream[] isArr = new InputStream[4];InputStream is = new InputStream()不是说抽象类不能实例化吗

解决方案 »

  1.   

    ==============================================
    哪个文件告诉你的?找出来,我也学习一下。
    InputStream 是接口,就算是抽象类也不会实例化呀。
      

  2.   

    1、InputStream[] isArr = new InputStream[4];
    =============================
    这个是创建了一个InputStream类型的数组,不是实例化2、InputStream is = new InputStream();
    =============================
    这个是不允许的,抽象类不能实例化3、抽象类作为父类,可以引用子类实例,可以查询下类的继承相关文档。下面是我写的一个方法,有注释,可以编译得试下,请参考。public void testClass() {
    //定义的是一个InputStream类型的数组,不是实例化
    InputStream[] isArr = new InputStream[4];

    //InputStream is = new InputStream();

    //父类引用指向子类对象
    byte[] src = {31, 0, 0, 0, 1, 0, 0, 0, 0};
    InputStream is = new ByteArrayInputStream(src);
    }
      

  3.   

    实体化也行,重写他的抽象方法即可InputStream inputStream=new InputStream() {

    @Override
    public int read() throws IOException {
    // TODO Auto-generated method stub
    return 0;
    }
    };
      

  4.   

    InputStream[] isArr = new InputStream[4];
    这个数组,里面存放的每个元素都是InputStream类型的,而这个也只是类型,不代表具体对象.就好像一辆车,里面有四个座位.我们都知道里面可以坐四个"人",而这四个人并没有说是"男人"还是"女人".
    "人"就是抽象,好似InputStream类型.