黑马程序员技术交流社区

标题: API [打印本页]

作者: H_bean    时间: 2016-9-11 20:57
标题: API
InputStream fs = System.in;
上面这句话算不算创建对象呢?
作者: H_bean    时间: 2016-9-11 20:58
求火速解答{:2_34:}{:2_36:}
作者: theape    时间: 2016-9-13 08:18
是创建对象,不过是System帮你创建的。你只是用fs接收了而已。
作者: 家有女王叫萌萌    时间: 2016-9-13 09:06
首先不是,  类名 对象名 = new 类名();这是创建对象的基本格式,核心是有new代表新建的意思,以后还有匿名对象(=号右边的部分)
作者: 家有女王叫萌萌    时间: 2016-9-13 09:21
首先不是,  类名 对象名 = new 类名();这是创建对象的基本格式,核心是有new代表新建的意思。
重点来了  inputstream是字节输入流的父类,而且是抽象类(抽象类与基本类的区别只有一点,它不能创建对象)虽然抽象类里面的方法可以抽象的方法也可以是有功能的方法,但是!但是!java定义了  抽象类不能创建对象;为啥不能呢 原因有2 (个人分析)假如抽象类里面的方法是抽象的,你非要创建对象,那么这个对象没有意义,因为呢,对象是类事物的一个具体化,也是类的实例化,你类里面都没有具体的成员方法,也就不能体现对象的特有属性;
第二点,假如抽象类里面全是具体的方法,java规定还是不能创建对象,这么做目的只有一个,就是不让其他类创建本类对象,交给子类完成
作者: H_bean    时间: 2016-9-20 08:38
theape 发表于 2016-9-13 08:18
是创建对象,不过是System帮你创建的。你只是用fs接收了而已。

后面又思考了一下,感觉这里是用System.in获得一个具体的字节输入流(是一个具体的实例),而InputStream又是字节输入流的抽象父类,因此这里算得上是父类引用指向子类对象.你觉得呢?
作者: theape    时间: 2016-9-21 09:10
H_bean 发表于 2016-9-20 08:38
后面又思考了一下,感觉这里是用System.in获得一个具体的字节输入流(是一个具体的实例),而InputStream又是 ...

是的,很对。理解的不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2