社区
Java SE
帖子详情
是InputStream抽象类,可却有构造方法。那能创建对象吗?
soarsophy
2011-11-14 08:10:23
大家知道,InputStream是抽象类,而一般抽象类是不能创建对象的。但查一下,又会发现InputStream是有构造方法的。并且据一些书籍的介绍,System.in就属于InputStream的一个对象。这到底怎么回事呢?是抽象类也能创建对象,还是InputStream就不是抽象类呢?请教各位高手和专家。
...全文
291
10
打赏
收藏
是InputStream抽象类,可却有构造方法。那能创建对象吗?
大家知道,InputStream是抽象类,而一般抽象类是不能创建对象的。但查一下,又会发现InputStream是有构造方法的。并且据一些书籍的介绍,System.in就属于InputStream的一个对象。这到底怎么回事呢?是抽象类也能创建对象,还是InputStream就不是抽象类呢?请教各位高手和专家。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
junlong3636
2011-11-14
打赏
举报
回复
恩,我觉得是这样!!曾经也纠结过,后来理解可能就是这个问题[Quote=引用 3 楼 magong 的回复:]
①抽象类不能实例化对象。但是其具体子类可以。
②InputStream是抽象类。所以虽然InputStream有构建器,但是不能用于实例化对象,只能在子类实例化子类对象的时候为子类服务。
③System.in是BufferedInputStream子类的对象,当然也符合InputStream类型。
[/Quote]
沧海雪
2011-11-14
打赏
举报
回复
[Quote=引用 5 楼 jiakai0419 的回复:]
2楼正解。
1楼扯淡。
接着你的问题,我想到了一个更深层次的问题。
抽象类为什么不能 创建对象呢。
因为抽象类有abstract的方法。
所以不能创建对象。
但是,抽象类必须有构造方法。
为什么这么说呢?
抽象类,有一个用途,就是当做模板。让别的类来继承他(继承的时候实现他所有的abstract方法)
大家应该知道
子类的构造方法里第一……
[/Quote]
顶!!!
抽象类是不能创建对象的,但非抽象的子类可以。
小小X
2011-11-14
打赏
举报
回复
[Quote=引用 5 楼 jiakai0419 的回复:]
2楼正解。
1楼扯淡。
接着你的问题,我想到了一个更深层次的问题。
抽象类为什么不能 创建对象呢。
因为抽象类有abstract的方法。
所以不能创建对象。
但是,抽象类必须有构造方法。
为什么这么说呢?
抽象类,有一个用途,就是当做模板。让别的类来继承他(继承的时候实现他所有的abstract方法)
大家应该知道
子类的构造方法里第一……
[/Quote]
学习了
jiakai0419
2011-11-14
打赏
举报
回复
朋友,记住要结贴。
jiakai0419
2011-11-14
打赏
举报
回复
结合3楼的答案
你应该可以理解了。
jiakai0419
2011-11-14
打赏
举报
回复
2楼正解。
1楼扯淡。
接着你的问题,我想到了一个更深层次的问题。
抽象类为什么不能 创建对象呢。
因为抽象类有abstract的方法。
所以不能创建对象。
但是,抽象类必须有构造方法。
为什么这么说呢?
抽象类,有一个用途,就是当做模板。让别的类来继承他(继承的时候实现他所有的abstract方法)
大家应该知道
子类的构造方法里第一句会调用super()也就是父类的构造方法
用来初始化从父类继承来的字段。
这个时候相当于在子类内部创建了一个隐藏的父类对象。
但是,这看似与我们刚才说的,抽象类不能创建对象矛盾了。
但,如果你自习思考就会知道。其实不矛盾。
抽象类不能创建对象是因为有方法是abstract类型的。
而我用子类继承他的时候必然实现了他的abstract方法。
这样就没有方法是abstract的了。
所以也就相当于刚才的创建合法。
这就是抽象类中有构造方法,而且必须有构造方法的原因。
小小X
2011-11-14
打赏
举报
回复
[Quote=引用 2 楼 yangjunloveyu 的回复:]
in是InputStream子类的一个对象,说它是InputStream的对象也可以的
抽象类不可以创建对象
InputStream是抽象类,
本人新手也不知道InputStream为什么会有构造方法
[/Quote]
抽象类也是可以定义 构造方法的
magong
2011-11-14
打赏
举报
回复
①抽象类不能实例化对象。但是其具体子类可以。
②InputStream是抽象类。所以虽然InputStream有构建器,但是不能用于实例化对象,只能在子类实例化子类对象的时候为子类服务。
③System.in是BufferedInputStream子类的对象,当然也符合InputStream类型。
小小X
2011-11-14
打赏
举报
回复
in是InputStream子类的一个对象,说它是InputStream的对象也可以的
抽象类不可以创建对象
InputStream是抽象类,
本人新手也不知道InputStream为什么会有构造方法
脉动
2011-11-14
打赏
举报
回复
个人理解:抽象类,不可以使用: new 类名(),进行创建对象的动作
InputStream
抽象类
的方法详解
首先类的结构
InputStream
这个
抽象类
是所有基于字节的输入流的超类 首先这是一个
抽象类
,实现了Closeable接口,也Closeable接口又拓展了AutoCloseable接口,因此所有
InputStream
及其子类都可以用于Java 7 新引入的带资源的try语句。读入字节之前,我们可能想要先知道还有多少数据可用,这有available方法完成,具体的读入由read()及其重...
java 创建
inputstream
对象_Java流对象:
InputStream
、OutputStream、Reader、Writer
流对象使用完一般要用close方法关闭。释放资源。
InputStream
和OutPutStream二者都是字节输入和输出的抽象父类,子字节为单位处理数据,每次读取、写入一个字节,适合处理二进制文件,如:音频、视频、图片等。Redaer和writer是字符输入输出的抽象父类,以字符为单位处理数据,每次读取或写入一个字符,适合处理文本文件,实现类有FileReader和FileWriter.附:Ja...
【Java基础学习5】方法和
构造方法
(超详细!)
构造方法
是用于
创建对象
时初始化对象的特殊方法。在Java中,每个类都可以定义自己的
构造方法
,通过关键字new创建一个类的实例时,系统会自动调用该类的
构造方法
来完成对象的初始化。2.普通方法的定义:(类似于C语言的自定义函数,java中叫方法)Java中的普通方法指的是类中定义的一般方法,不是
构造方法
、静态方法或抽象方法的方法。普通方法可以访问本类中的所有成员变量和其他方法,也可以对这些成员变量(上一节讲过)进行修改。公式:(访问权限修饰符有专门一期有博客,同学们可以点击查看。
Java字节流之
InputStream
抽象类
与OutputStream
抽象类
目录一、Java流设计理念 一、Java流设计理念 Java将数据的输入输出(I/O)操作当作“流”来处理,“流”是一组有序的数据序列。“流”分为两种形式:输入流和输出流,从数据源中读取数据是输入流,将数据写入到目的地是输出流。以CPU为中心,从外部设备读取数据到内存,进而再读入到CPU,这是输入(Input,缩写 I)过程;将内存中的数据写入到外部设备,这是输出(Output,缩写O)过程。所以...
InputStream
抽象类
和OutputStream
抽象类
InputStream
抽象类
InputStream
主要方法如下: int read():读取一个字节,返回0-255范围内的int字节值。如果因为已经到达流末尾,而且,没有可用的字节,则返回值-1。 int read(byte b[ ]):读取多个字节,数据放到字节数组b中,返回值为时机读取的字节的数量,如果因为已经到达末尾,而且没有可用的字节,则返回值-1。 int read(byte...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章