当前位置: 代码迷 >> J2SE >> inputstream中的read步骤
  详细解决方案

inputstream中的read步骤

热度:101   发布时间:2016-04-23 20:27:11.0
inputstream中的read方法
为什么inputstream中的read()是抽象的,而read(byte[])却不是,为什么不都弄成抽象的或非抽象的
------解决方案--------------------
你自己看一下InputStream的实现就明白了。
简单的说:
read(byte[]) 调用 read(byte[],int,int)
read(byte[],int,int) 调用 read()
明白了吧,read()是基础,
另外两个其实是实现了一个读取的不同方式,而读取功能本身的实现是写在read()里的,
需要继承这个抽象类的类自己实现。
------解决方案--------------------
抽象类的原则是尽量只让子类实现基础方法,而自身实现通用方法,否则的话直接设计成接口不就行了,何必要有抽象类。
read(byte[])可以通过循环调用read实现,所以子类不必要实现它(当然通常子类会override这个方法去写自己的实现的,但这只是效率上的考虑),而read就不能这样了,它属于基础方法,不同的inputstream实现是不同的,所以需要子类来实现,因此只能是抽象的。
  相关解决方案