黑马程序员技术交流社区

标题: 抽象类为什么不能被实例化 [打印本页]

作者: 曹昌豪    时间: 2012-6-1 10:14
标题: 抽象类为什么不能被实例化
抽象类的作用是什么?为什么不能被实例化?在Writer类中我发现了
构造方法
protected  Writer()
          创建一个新的字符流 writer,其关键部分将同步 writer 自身。
protected  Writer(Object lock)
          创建一个新的字符流 writer,其关键部分将同步给定的对象。
既然不能被实例化为什么还提供供子类调用的构造方法?


作者: 田建    时间: 2012-6-1 11:26
抽象类之所以不能被实例化,是因为它里面都是抽象方法,实例化对象调用其里面的方法没有意义,我们需要做的就是覆写掉里面的抽象方法。
作者: 潘东升    时间: 2012-6-1 12:23
提供子类调用的构造方法,是放在子类的构造方法内首行,说明初始化子类对象的时候先加载了父类的父类的构造方法,也就是加载了父类的属性和方法,这样子类对象就能调用父类的成员,这也就是子类继承父类的意义:为了使用父类的成员。如果不提供子类调用的方法,也就无法加载父类的成员,继承就毫无意义
作者: 潘东升    时间: 2012-6-1 12:30
本帖最后由 潘东升 于 2012-6-1 12:31 编辑

提供子类调用的构造方法,是放在子类的构造方法内首行,说明初始化子类对象的时候先加载了父类的构造方法,也就是加载了父类的属性和方法,这样子类对象就能调用父类的成员,这也就是子类继承父类的意义:为了使用父类的成员。如果不提供子类调用的方法,也就无法加载父类的成员,继承就毫无意义
作者: 于清云    时间: 2012-6-1 13:47
我打个比方吧。
抽象类:人类
子类:我们每个人
抽象方法:吃饭
因为我们每个人都继承了抽象类人类,故我们都会吃饭,但是我们吃饭时候吃的东西不一样。
人类这个抽象类只是强制我们要吃饭,但是我们想吃啥,它就管不着了。呵呵。。。
作者: whocases    时间: 2012-6-2 20:52
首先抽象类不能实例化是因为它不代表那一个具体的事物,而是指的那一类 如:我申明一个抽象类车.很显然你并不能把车这个类来创造某个具体的物体来,你只有派生一个汽车,你才可以生产出来。
作者: 包晗    时间: 2012-6-3 01:00
抽象类不能实例化是因为他是抽象的.
具体的类才能实例化

作者: 朝哥    时间: 2012-6-3 09:39
抽象类不能实例化的真正原因是
开发这个语言的sun公司就是这么定义的,你new一个就会报错。

抽象父类给提供给子类一个方法,主要是起规范作用,你不写父类这个方法也行。
如果是接口的话,子类就一定要复写父类所有的抽象方法。
作者: 王月    时间: 2012-6-3 10:28
       三楼同学说的没错lz好好理解一下。

           我稍微补充一下,学java时要先搞明白它的思想。
    抽象类之所以存在就是要子类去实现他的所有的抽象方法,既然是抽象的,创建它的对象后调用它的方法什么都不会产生
   ,所以毫无意义。没有意义做在它干什么,所以不可以





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