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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fdiskfix 中级黑马   /  2012-10-22 23:28  /  1508 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类不能用来创建对象,那么他的构造函数有什么作用呢?

评分

参与人数 1技术分 +1 收起 理由
邓艳秋 + 1

查看全部评分

6 个回复

倒序浏览
抽象类是包含字段的,它的构造函数可以负责字段的初始化。特别是Private字段;因为抽象类可以包含具体函数,而该具体函数就可能用到这个Private字段。

评分

参与人数 1技术分 +1 收起 理由
邓艳秋 + 1

查看全部评分

回复 使用道具 举报
一个类在实例的时候最先要执行的是构造函数,构造函数的作用就是创建对象和对成员变量初始化的,而抽象类中的构造函数是初始化本类或者派生类。
当子类继承抽象类时,会追溯父类的构造方法,这样,子类就能获得父类非私有的属性及方法。
总的来说,是给子类初始化获得一些非私有属性或方法用的。

另外,你需要看看抽象类和接口的异同,以增进知识的厚度。

评分

参与人数 1技术分 +1 收起 理由
邓艳秋 + 1

查看全部评分

回复 使用道具 举报
创建子类对象的时候会显式或隐式追溯调用父类的构造方法;
显式调用指的是在子类的构造方法中可使用super(args参数列表)语句调用父类的构造方法  如果子类的构造方法中没有显示地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则系统默认调用父类无参数的构造方法(此为隐式调用) 如果子类构造方法中既未显式调用父类构造方法(即默认调用父类的无参构造函数super()),而父类中又没有无参的构造方法,那么这时候会出现编译错误。

评分

参与人数 1技术分 +1 收起 理由
邓艳秋 + 1

查看全部评分

回复 使用道具 举报
抽象类可以有构造函数,他构造函数的作用我觉的是1,初始化抽象类的成员。2,为继承自它的子类使用。

评分

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

查看全部评分

回复 使用道具 举报
补充一下,抽象类首先是作为普通类存在的,因为抽象方法的存在所以 普通类--->>>抽象类
所以这样来看抽象类保留有普通类的特点---构造方法的回溯,同时也具有自己的特殊性---不能创建抽象类的实例对象,所以抽象类的构造方法是因为这个构造方法的回溯而存在的,通俗点儿来说就是提供给子类来使用的,而不是给自己用的,谢谢楼主的提问,也让我想明白了这个问题。
回复 使用道具 举报
看了大家的回答感觉,清晰了很多,多谢大家帮忙解答了,辛苦各位了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马