黑马程序员技术交流社区
标题:
关于InputStream抽象类是否能够实例的疑问
[打印本页]
作者:
曹宇
时间:
2013-5-16 20:02
标题:
关于InputStream抽象类是否能够实例的疑问
本帖最后由 曹宇 于 2013-5-16 20:47 编辑
我看毕老师的这段代码:
InputStream in = System.in;
int ch=0; ch=in.read();
有两个疑问,1 InputStream不是抽象类吗 怎么有实例 in
2 read是抽象方法,为什么返回值就是你键盘输入的数据呢?
抽象方法不是要子类复写吗
这里调用这个抽象方法,是InputStream调用的 不是子类调用没复写 按理说这个read不就是空的吗 没内容。怎么可以实际用了呢?
作者:
张甲甲
时间:
2013-5-16 20:19
in对象是System类的一个静态变量 它是一个标准输入流 本身就是一个对象 。它继承与InputSteam
你所说的就是 java语言的精髓 父类对象指向子类
作者:
SOAR
时间:
2013-5-16 20:27
1.InputStream确实是抽象的但是怎么就没有实例了呢。就像狗有很多种,某条藏獒或者其他的狗不就是它的实例吗。
2.in的定义是这样的:标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
3.System的源码中并没有提供read方法的实现,可能是in在调用read方法时是在调用InputStream其他子类的read方法。
作者:
曹宇
时间:
2013-5-16 20:47
恩,明白了,就跟多态了 InputStream本身不能有实例 但是可以有其引用指向子类实例。。。
而read();方法可能就是 标准输出流所内带的某种东西给实现的吧。。。。
作者:
曹睿翔
时间:
2013-5-16 21:26
曹宇 发表于 2013-5-16 20:47
恩,明白了,就跟多态了 InputStream本身不能有实例 但是可以有其引用指向子类实例。。。
而read();方法 ...
是这么回事,哈哈,多看看代码,用面向对象去研究
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2