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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马不黑 中级黑马   /  2014-1-12 09:10  /  710 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问抽象类里面为什么可以写构造函数?既然是抽象类,就不能直接new 对象了,还要构造函数干嘛呢?

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
构造函数是给自己子类实例化的.....
回复 使用道具 举报
抽象类当然可以有构造函数了,如果它没有的话,那么它的子类要初始化.如何调用父类的构造函数呢
每个类都必须要有构造函数,否则,它如何能被构造出来呢?   有构造函数 但是不能实例化,不能new出对象

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 淡定

查看全部评分

回复 使用道具 举报
因为构造函数的作用不仅仅是为了此类创建对象时用,而且也可以是子类创建对象时对成员的初始化作用,要知道抽象类也是可以被其他的类继承的,而子类的构造函数的第一行都有一句默认的super();即父类的空参数构造函数,如果父类有自己自定义的非空参数的构造函数,那么子类的构造函数的第一行也必须手动的写上相对应的super语句,进行去访问父类,以查看父类是如何进行初始化成员的,这个是必须有的,所以父类中是一定有构造函数的。并且要与接口区分开,接口是没有构造函数的,因为接口不能创建对象,并且接口中的函数都是没有方法体的,所以没有构造函数。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
套用继承的概念。在JAVA当中也就是接口的概念。
继承时,子类实例化时,父类,子类的构造函数都会调用。因此父类的构造函数是必须的。
抽象类的构造函数的作用就在这里。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 神马都是浮云

查看全部评分

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