返回信息流在java.io.* 中,InputStream是一个抽象类,为什么可以写出如下代码:
InputStream is = soket.getInputStream();
不是抽象类不可以实例化的吗? 难道如上语句不算是实例化吗? 求解释
这是一条镜像帖。来源:北邮人论坛 / java / #21647同步于 2012/3/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
关于抽象类与实例化的疑惑
jessica1
2012/3/7镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
什么叫实例化
new InputStream()才叫实例化
InputStream is的意思是声明一个对象变量is
【 在 jessica1 (jessica) 的大作中提到: 】
: 在java.io.* 中,InputStream是一个抽象类,为什么可以写出如下代码:
: InputStream is = soket.getInputStream();
: 不是抽象类不可以实例化的吗? 难道如上语句不算是实例化吗? 求解释
: ...................
【 在 buptlong 的大作中提到: 】
: 什么叫实例化
: new InputStream()才叫实例化
: InputStream is的意思是声明一个对象变量is
谢谢指点
soket.getInputStream()返回的是InputStream的子类,实际类型是什么未必,你可以用class对象打出来看。可以用超类引用子类,所以才有InputStream is
那句话可以理解为,从socket对象中获取一个对象,这个对象一定实现了InputStream所声明的方法。
这样后面就可以基于这样的信任(这个对象一定实现了InputStream所声明的方法)来read数据了。
我觉得吧,InputStream is只是实现了一个引用,并没有进行实例化,然后把这个引用(就像指针)指向了InputStream的子类的子类,在C++里面这是多态的用法吧
你说的有道理
【 在 luoshen123 的大作中提到: 】
: 我觉得吧,InputStream is只是实现了一个引用,并没有进行实例化,然后把这个引用(就像指针)指向了InputStream的子类的子类,在C++里面这是多态的用法吧
概念不要搞错了啊
【 在 jessica1 的大作中提到: 】
: 在java.io.* 中,InputStream是一个抽象类,为什么可以写出如下代码:
: InputStream is = soket.getInputStream();
: 不是抽象类不可以实例化的吗? 难道如上语句不算是实例化吗? 求解释
赞~
【 在 luoshen123 的大作中提到: 】
: 我觉得吧,InputStream is只是实现了一个引用,并没有进行实例化,然后把这个引用(就像指针)指向了InputStream的子类的子类,在C++里面这是多态的用法吧