在java中什么情况下子类构造方法一定要用super()调用父类构造方法?最好举例子。

在java中什么情况下子类构造方法一定要用super()调用父类构造方法?最好举例子。在实例化子类对象时不也是调用了父类构造方法创建了父类对象吗?

一般用super要不就是传参数过去,要不就是调用父类的方法或属性。

比如装饰模式。

Project employe = new Employe(); //程序员
Project managerA = new ManagerA(employe); //项目经理A 将手下的程序员当成参数传过去
public class ManagerA extends Manager //继承通用项目经理
public ManagerA(Project project) {
super(project); //跳到下面去了。因为编码是通用的工作所以不在具体的项目经理A这里实现
}

public class Manager implements Project

private Project project;

public Manager(Project project) {
this.project = project;
}

/**
* 模板:定义项目经理自己的事情
*/
public void startWork() {
//早期工作
doEarlyWork();
// 程序员编码
project.doCoding(); //根据传进来的程序员对象进行编码
// 收尾工作
doEndWork();
}

//在程序员编码的情况下进行前期后期收尾工作的装饰。

managerA.doCoding();
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-30
在实例化子类对象的时候不会创造父类对象的,除非在构造方法中利用super()才构造出父类对象
相似回答