为什么java类构造函数也没有继承?

时间:2011-12-28 14:10:48

标签: java inheritance constructor

  

可能重复:
  Java Constructor Inheritance

创建子类时,

  1. 为什么我必须在每个ctor中创建一个构造函数并写入super?
  2. 如果我的行为与超类类似,我不应该继承它们吗?

5 个答案:

答案 0 :(得分:1)

构造函数不是继承的,因为您没有创建超类的实例,而是创建新类的实例。无法知道要调用哪个超类构造函数。

公平地说,默认(无arg构造函数)始终存在。这是你所指的具体论证,我在假设。

答案 1 :(得分:0)

实际上,java总是为子类创建新的构造函数,但仅限于默认的,没有参数构造函数。如果您的类具有默认(无参数)构造函数以外的构造函数,则必须再次定义它们...构造函数不是行为方法,而是对象初始化(对于具有新属性的子类可能会更改)

答案 2 :(得分:0)

默认无参数默认情况下,继承并调用构造函数。如果你想打电话给另一个,你可以使用super()。如果无法使用默认构造函数,则必须使用一个可访问的超级构造函数

答案 3 :(得分:0)

构造函数与类名具有相同的名称,如果您能够将它们继承到子类中,它们就不再是子类的构造函数。默认的无参数构造函数总是被继承。

答案 4 :(得分:0)

调用构造函数以从类蓝图创建对象,即初始化类的数据成员。如果子类要继承构造函数,那么在调用子类时,您还需要了解父类的数据成员。这不是人们在现实生活中所看到的。例如,如果您创建一个类型为法拉利的对象,您肯定会对初始化速度,加速度等参数感兴趣,即使法拉利继承了Car,您也不会为初始化Car对象的参数而烦恼。因此,在调用法拉利的构造函数时,您只会对法拉利的成员而不是其父类的成员感到困扰。我希望我的观点清楚。