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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© H_bean 中级黑马   /  2016-9-11 20:57  /  646 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

InputStream fs = System.in;
上面这句话算不算创建对象呢?

6 个回复

倒序浏览
求火速解答{:2_34:}{:2_36:}
回复 使用道具 举报
是创建对象,不过是System帮你创建的。你只是用fs接收了而已。
回复 使用道具 举报
首先不是,  类名 对象名 = new 类名();这是创建对象的基本格式,核心是有new代表新建的意思,以后还有匿名对象(=号右边的部分)
回复 使用道具 举报
首先不是,  类名 对象名 = new 类名();这是创建对象的基本格式,核心是有new代表新建的意思。
重点来了  inputstream是字节输入流的父类,而且是抽象类(抽象类与基本类的区别只有一点,它不能创建对象)虽然抽象类里面的方法可以抽象的方法也可以是有功能的方法,但是!但是!java定义了  抽象类不能创建对象;为啥不能呢 原因有2 (个人分析)假如抽象类里面的方法是抽象的,你非要创建对象,那么这个对象没有意义,因为呢,对象是类事物的一个具体化,也是类的实例化,你类里面都没有具体的成员方法,也就不能体现对象的特有属性;
第二点,假如抽象类里面全是具体的方法,java规定还是不能创建对象,这么做目的只有一个,就是不让其他类创建本类对象,交给子类完成
回复 使用道具 举报
theape 发表于 2016-9-13 08:18
是创建对象,不过是System帮你创建的。你只是用fs接收了而已。

后面又思考了一下,感觉这里是用System.in获得一个具体的字节输入流(是一个具体的实例),而InputStream又是字节输入流的抽象父类,因此这里算得上是父类引用指向子类对象.你觉得呢?
回复 使用道具 举报
theape 中级黑马 2016-9-21 09:10:02
7#
H_bean 发表于 2016-9-20 08:38
后面又思考了一下,感觉这里是用System.in获得一个具体的字节输入流(是一个具体的实例),而InputStream又是 ...

是的,很对。理解的不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马