黑马程序员技术交流社区

标题: 抽象类的疑惑 [打印本页]

作者: fdiskfix    时间: 2012-10-22 23:28
标题: 抽象类的疑惑
抽象类不能用来创建对象,那么他的构造函数有什么作用呢?
作者: 江苏孙浩    时间: 2012-10-23 00:03
抽象类是包含字段的,它的构造函数可以负责字段的初始化。特别是Private字段;因为抽象类可以包含具体函数,而该具体函数就可能用到这个Private字段。
作者: 黑马杨锦喜    时间: 2012-10-23 00:48
一个类在实例的时候最先要执行的是构造函数,构造函数的作用就是创建对象和对成员变量初始化的,而抽象类中的构造函数是初始化本类或者派生类。
当子类继承抽象类时,会追溯父类的构造方法,这样,子类就能获得父类非私有的属性及方法。
总的来说,是给子类初始化获得一些非私有属性或方法用的。

另外,你需要看看抽象类和接口的异同,以增进知识的厚度。
作者: 李连闯    时间: 2012-10-23 07:30
创建子类对象的时候会显式或隐式追溯调用父类的构造方法;
显式调用指的是在子类的构造方法中可使用super(args参数列表)语句调用父类的构造方法  如果子类的构造方法中没有显示地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则系统默认调用父类无参数的构造方法(此为隐式调用) 如果子类构造方法中既未显式调用父类构造方法(即默认调用父类的无参构造函数super()),而父类中又没有无参的构造方法,那么这时候会出现编译错误。
作者: 程杰    时间: 2012-10-23 09:23
抽象类可以有构造函数,他构造函数的作用我觉的是1,初始化抽象类的成员。2,为继承自它的子类使用。
作者: 李连闯    时间: 2012-10-23 09:44
补充一下,抽象类首先是作为普通类存在的,因为抽象方法的存在所以 普通类--->>>抽象类
所以这样来看抽象类保留有普通类的特点---构造方法的回溯,同时也具有自己的特殊性---不能创建抽象类的实例对象,所以抽象类的构造方法是因为这个构造方法的回溯而存在的,通俗点儿来说就是提供给子类来使用的,而不是给自己用的,谢谢楼主的提问,也让我想明白了这个问题。
作者: fdiskfix    时间: 2012-10-25 20:51
看了大家的回答感觉,清晰了很多,多谢大家帮忙解答了,辛苦各位了




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