构造函数中super的用法
时间: 2023-10-02 17:03:56 浏览: 47
在Java中,super关键字用于调用父类的构造函数。子类的构造函数中可以使用super关键字来调用父类的构造函数,以便在创建子类对象时初始化父类的数据成员。
super关键字可以有两种形式:
1. super()表示调用父类的无参构造函数,通常在子类的构造函数中的第一行使用。
2. super(parameter list)表示调用父类中具有相应参数列表的构造函数,通常在子类的构造函数中的第一行使用。
使用super关键字调用父类的构造函数,可以确保父类的构造函数被正确地执行,从而初始化父类中的数据成员。这样可以避免在子类中重复定义父类中已经定义过的数据成员,提高代码的重用性。
相关问题
java 构造 super_java – 在构造函数中的super()
在Java中,super是一个关键字,它可以用来调用父类的方法、构造函数和属性。在构造函数中,使用super()来调用父类的构造函数,以便完成父类的初始化工作,从而让子类对象能够正确的初始化。
当一个子类对象被创建时,它的构造函数会先调用父类的构造函数,然后才调用子类的构造函数。如果子类没有显式地调用父类的构造函数,则系统会默认调用父类的无参构造函数。但是,如果父类没有无参构造函数,子类必须显式地调用父类的构造函数。
在这种情况下,可以使用super关键字来调用父类的构造函数。例如:
```
public class ChildClass extends ParentClass {
public ChildClass(int value) {
super(value); // 调用父类的有参构造函数
// 子类的其他初始化工作
}
}
```
上面的代码中,子类ChildClass继承自父类ParentClass,并且在自己的构造函数中调用了父类的有参构造函数super(value),以便完成父类的初始化工作。
构造方法不使用super函数如何实现?
如果不使用`super`函数,可以在子类的构造方法中直接调用父类的构造方法,如下所示:
```
public class Catcher extends BaseBallPlayer {
public Catcher(String name) {
pname = name;
}
@Override
public void play() {
catchBall();
runBase();
}
}
```
在此类中,子类的构造方法中直接给父类的`pname`属性赋值,实现了和`super`函数相同的效果。但是这种方式并不推荐,因为如果父类的构造方法有其他操作(例如对属性进行初始化),那么这些操作就无法执行了。因此还是建议使用`super`函数来调用父类的构造方法。