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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹昌豪 中级黑马   /  2012-6-1 10:14  /  26108 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

8 个回复

倒序浏览
抽象类之所以不能被实例化,是因为它里面都是抽象方法,实例化对象调用其里面的方法没有意义,我们需要做的就是覆写掉里面的抽象方法。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
提供子类调用的构造方法,是放在子类的构造方法内首行,说明初始化子类对象的时候先加载了父类的父类的构造方法,也就是加载了父类的属性和方法,这样子类对象就能调用父类的成员,这也就是子类继承父类的意义:为了使用父类的成员。如果不提供子类调用的方法,也就无法加载父类的成员,继承就毫无意义
回复 使用道具 举报
本帖最后由 潘东升 于 2012-6-1 12:31 编辑

提供子类调用的构造方法,是放在子类的构造方法内首行,说明初始化子类对象的时候先加载了父类的构造方法,也就是加载了父类的属性和方法,这样子类对象就能调用父类的成员,这也就是子类继承父类的意义:为了使用父类的成员。如果不提供子类调用的方法,也就无法加载父类的成员,继承就毫无意义

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
我打个比方吧。
抽象类:人类
子类:我们每个人
抽象方法:吃饭
因为我们每个人都继承了抽象类人类,故我们都会吃饭,但是我们吃饭时候吃的东西不一样。
人类这个抽象类只是强制我们要吃饭,但是我们想吃啥,它就管不着了。呵呵。。。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
首先抽象类不能实例化是因为它不代表那一个具体的事物,而是指的那一类 如:我申明一个抽象类车.很显然你并不能把车这个类来创造某个具体的物体来,你只有派生一个汽车,你才可以生产出来。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
抽象类不能实例化是因为他是抽象的.
具体的类才能实例化
回复 使用道具 举报
抽象类不能实例化的真正原因是
开发这个语言的sun公司就是这么定义的,你new一个就会报错。

抽象父类给提供给子类一个方法,主要是起规范作用,你不写父类这个方法也行。
如果是接口的话,子类就一定要复写父类所有的抽象方法。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
       三楼同学说的没错lz好好理解一下。

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

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马