A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public abstract class InputStream,这是个抽象类,但是为什么有构造函数?
而且可以接收比如  Socket s =new Socket;   InputStream is=s.getInputStream求解释!!!
还有OutputStream也是!

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 刘克方 于 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这里用到了多态的知识
父类引用指向子类对象。


评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
s.getInputStream返回类型也是InputStream,这不算多态吧?
回复 使用道具 举报
因为他还有子类呀,当子类初始化的时候,是  不是要读super();所以有构造函数咯。
回复 使用道具 举报
林豪 发表于 2012-5-15 22:10
s.getInputStream返回类型也是InputStream,这不算多态吧?

它返回的InputStream对象指向的什么对象呢?!
我们定义一个自己的流对象,它有个方法返回的是InputStream对象;
class MyInputStream{
public InputStream getStream(){
return new FileInputStream();
}
}
InputStream in=new MyInputStream().getStream();
这同样是多态,上面和这是一样的道理。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
哦哦,原来是这样啊,受教了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马