package com.ibm;import java.io.OutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;public class outputStream1{ //将程序读入到内存中去   public static void main(String[] args)throws IOException{
      String str = "abcd";
      OutputStream out = new ByteArrayOutputStream();
      byte[] b = str.getBytes();
      out.write(b);
      System.out.println(out.toString());
      System.out.println(out);
   }
}OutputStream类的引用out不是没有toString()方法的吗,为什么可以调用啊?OutputStream out = new ByteArrayOutputStream();这句话是父类对象指向子类,父类引用不是不能用子类没重写的方法吗?(toString()方法)

解决方案 »

  1.   

    OutputStream是Object的子类,所以OutputStream有toString方法,而ByteArrayOutputStream是OutputStream的子类,并且重写了toString方法,所以  System.out.println(out.toString());
      System.out.println(out);输出的是ByteArrayOutputStream里的toString方法:toString
    public String toString()使用平台默认的字符集,通过解码字节将缓冲区内容转换为字符串。
      

  2.   

    不管怎么说,每个类都有toString方法,因为object就有这个方法,至少有继承吧?只是有的方法重写了,有的没重写罢了。