黑马程序员技术交流社区

标题: 继承中的问题 [打印本页]

作者: 葛晓东    时间: 2014-5-28 16:12
标题: 继承中的问题
本帖最后由 葛晓东 于 2014-5-28 23:36 编辑

是不是父类中有有参构造函数,子类就必须有与父类构造函数有相同参数的构造函数?
作者: yang1352546    时间: 2014-5-28 16:22
子类不可以复写父类额构造函数 ,构造函数只能在本类中出现
另外如果父类,有多个重载构造方法,子类的构造方法,只要访问其中一个即可。

作者: never615    时间: 2014-5-28 17:30
本帖最后由 never615 于 2014-5-28 17:35 编辑

首先明白这几点知识:
1.一个类你不写构造函数系统会默认有一个的,如果你写了一个不管是带不带参数的,系统就不会默认写那个空的构造函数了
2.默认的构造函数第一句是super()


比如下面这个例子:如果只在Person里面写了一个带参的构造函数,系统就不会为他写空的了                               当Student继承Person,里面什么都不写时: 系统会给他默认一个空的构造函数并且第一句是super()    !!问题出现了 ,Person里面并没有空参的构造函数,所以这样调用是错误的

                               要不你手动给Person加一个空的构造函数,要不你子类也写一个带参的构造函数构造函数。里面也要写上super语句,不写就是super()有爆错了!!像这个例子就写上super(name)
所以你的问题,并不是只要父类有带参的构造函数,你就要写与父类构造函数有相同参数的构造函数,你什么构造函数都不写,给父类加一个空的构造函数就行。
class Person
{
        private String name;
        //Person()
        //{}
        Person(String name)
        {
                this.name=name;
        }
        public String getName()
        {
                return name;
        }

}
class Student extends Person
{
        //Student(String name)
        //{
                ////super(name);
        //}
}



作者: code2014    时间: 2014-5-28 17:38
never615 发表于 2014-5-28 17:30
首先明白这几点知识:
1.一个类你不写构造函数系统会默认有一个的,如果你写了一个不管是带不带参数的,系 ...

很详细~~~
作者: never615    时间: 2014-5-28 17:42
code2014 发表于 2014-5-28 17:38
很详细~~~

谢谢:#:#




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