Java编程构造函数的理解

时间:2012-11-26 06:39:58

标签: java constructor

我是java的新手并通过它学习。 如果子类具有参数构造函数,是否有必要为超类使用参数构造函数,如果子类具有参数构造函数且超类具有默认的无参数构造函数,会发生什么?

4 个答案:

答案 0 :(得分:1)

这不是问题 - 但你可以在子类的构造函数中显式调用super()(作为子类'构造函数中的第一个语句),或让编译器为你做 - 因为它隐式调用无网段构造函数(如果存在)作为第一步。

执行其中一项将“让班级知道”如何构建超类。

示例:

class A { 
//defaulut argumentless constructor is implicitly created
}

class B extends A {
  B(int x) { 
      super(); //invoking super()
      //rest of construction
  }
}

答案 1 :(得分:0)

简而言之:每个班级只需要担心实例化。

如果超类有一个no-arg构造函数而子类没有,那么子类就不需要将任何参数传递给超类构造函数;只是调用它。但是,如果超类需要任何参数来实例化其任何成员,那么超类构造函数应该确实接受参数。

答案 2 :(得分:0)

如果子类包含参数构造函数,则不必在超类中使用参数构造函数。

基本上,如果为子类创建对象,则构造函数将从超类执行。如果父类具有默认构造函数。如果超类不包含任何默认构造函数,则编译器将提供其自己的默认构造函数。

答案 3 :(得分:0)

是的,你可以在子类中使用一个有争议/参数化的构造函数,即使你在父类中没有一个有争议的构造函数。这取决于你将在子类构造函数中做什么(默认/参数化),是否可以调用父类构造函数。

要调用父类构造函数,请使用'super();'在child的构造函数的第一行。如果将一些参数传递给此super()方法的参数,那么它将尝试调用父类的参数化构造函数。

尝试对这些概念进行一轮实践,你将会更加完美:)。