inputstream中的read方法

qiaoguang123 2014-08-07 10:15:58
为什么inputstream中的read()是抽象的,而read(byte[])却不是,为什么不都弄成抽象的或非抽象的
...全文
227 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
vnvlyp 2014-08-07
  • 打赏
  • 举报
回复
抽象类的原则是尽量只让子类实现基础方法,而自身实现通用方法,否则的话直接设计成接口不就行了,何必要有抽象类。 read(byte[])可以通过循环调用read实现,所以子类不必要实现它(当然通常子类会override这个方法去写自己的实现的,但这只是效率上的考虑),而read就不能这样了,它属于基础方法,不同的inputstream实现是不同的,所以需要子类来实现,因此只能是抽象的。
doer_ljy 2014-08-07
  • 打赏
  • 举报
回复
你自己看一下InputStream的实现就明白了。 简单的说: read(byte[]) 调用 read(byte[],int,int) read(byte[],int,int) 调用 read() 明白了吧,read()是基础, 另外两个其实是实现了一个读取的不同方式,而读取功能本身的实现是写在read()里的, 需要继承这个抽象类的类自己实现。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧