黑马程序员技术交流社区
标题:
为什么InputStream有构造函数呢?并且能接收?
[打印本页]
作者:
林豪
时间:
2012-5-15 21:43
标题:
为什么InputStream有构造函数呢?并且能接收?
public abstract class InputStream,这是个抽象类,但是为什么有构造函数?
而且可以接收比如 Socket s =new Socket; InputStream is=s.getInputStream求解释!!!
还有OutputStream也是!
作者:
刘克方
时间:
2012-5-15 21:46
本帖最后由 刘克方 于 2012-5-15 22:03 编辑
new InputStream() {
@Override
public int read() throws IOException {
// TODO Auto-generated method stub
return 0;
}
};
通过上面的代码可以new出来InputStream对象,这里用到了匿名类的知识;
InputStream提供构造方法,通过复写其read()方法,以便我们根据需要定义自己的流。
InputStream is=s.getInputStream这里用到了多态的知识
父类引用指向子类对象。
作者:
林豪
时间:
2012-5-15 22:10
s.getInputStream返回类型也是InputStream,这不算多态吧?
作者:
刘_浩
时间:
2012-5-15 22:14
因为他还有子类呀,当子类初始化的时候,是 不是要读super();所以有构造函数咯。
作者:
刘克方
时间:
2012-5-15 22:32
林豪 发表于 2012-5-15 22:10
s.getInputStream返回类型也是InputStream,这不算多态吧?
它返回的InputStream对象指向的什么对象呢?!
我们定义一个自己的流对象,它有个方法返回的是InputStream对象;
class MyInputStream{
public InputStream getStream(){
return new FileInputStream();
}
}
InputStream in=new MyInputStream().getStream();
这同样是多态,上面和这是一样的道理。
作者:
林豪
时间:
2012-5-15 22:39
哦哦,原来是这样啊,受教了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2