黑马程序员技术交流社区

标题: 抽象类继承实体类时,为什么实体类要有明确的构造函数? [打印本页]

作者: 李敬卫    时间: 2012-12-29 00:12
标题: 抽象类继承实体类时,为什么实体类要有明确的构造函数?
求解释,越详细越好
作者: 夏晓彤    时间: 2012-12-29 01:36
这个问题涉及到两个个基础知识:
1.所有的class都必须有一个构造方法,如果你没有在代码里声明构造方法,系统会自动给你生成一个公有无参的构造方法。而只要你自己声明了一个构造方法,无论有参无参,私有公有,系统就不再帮你生成默认无参构造器了。
2.所有的子类构造器都要求在第一行代码中调用父类构造器,如果不写,系统默认去调用父类的无参构造器。
class A{
                public A(){}
        }

abstract class B extends A{
                public B()
                {
                super();
                }
}
这么写是可以通过编译的,但是如果把public A(){}改为privateA(){}就会提示错误,说A()是不可见的,
由此可见系统把默认的构造方法也算进去了




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