黑马程序员技术交流社区
标题:
InputStream和OutputStream的构造方法<已解决>
[打印本页]
作者:
吴扬
时间:
2012-6-2 22:57
标题:
InputStream和OutputStream的构造方法<已解决>
本帖最后由 吴扬 于 2012-6-18 01:24 编辑
今天在学习的过程中,查看Java Api,发现InputStream和OutputStream这两个抽象类都有构造方法,一直不明白是为什么。而且在毕老师的视频中,在讲解读取键盘录入的时候有这样的语句:InputStream in = System.in;
为什么这两个抽象类会有构造方法呢?抽象类不是不能实例化对象的吗?
作者:
刘伯阳
时间:
2012-6-2 23:03
本帖最后由 刘伯阳 于 2012-6-2 23:06 编辑
你可能是搞混了,抽象类是可以有构造方法的,因为抽象类需要被继承。不能有构造方法的是接口。
作者:
黑马张扬
时间:
2012-6-2 23:06
抽象类可以有构造方法,一般是子类继承这个抽象类时用的
InputStream in = System.in
in是System的一个静态字段 in的类型的是InputStream
作者:
杜俊彪
时间:
2012-6-2 23:14
本帖最后由 杜俊彪 于 2012-6-2 23:58 编辑
楼上的都说的对 , 当然 要有构造方法才能被继承;
因为in是System类的InputStream类型的静态属性(字段),所以可以直接拿来用而不用实例化对象 ;
至于你说的抽象类不能实例化,确实是这样; 但, 可以由
子类
来实例化吧, 这是
多态
所支持的; 如:InputStream in = new FileInputStream("Demo.txt") ;这是可以的;
作者:
何拴绪
时间:
2012-6-2 23:44
抽象类不能实例化但是可以有构造方法,原因是实体类继承抽象类后,在new一个实体类对象的时候,首先会找抽象类的构造方法,所以他是给子类使用的。
作者:
杨海波
时间:
2012-6-2 23:59
1,in是System类的InputStream类型的静态属性,所以可以直接拿来用而不用实例化对象。
2,java抽象类的构造方法和普通类的构造方法一样都是用来初始化类,只是抽象类的构造方法不能直接调用 因为抽象类不能实现实例
但是一个普通类继承了抽象类 便也可以在构造函数中调用其抽象类的构造函数也可以使用其方法,但必须在子类里面重写
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2