在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()才构造出父类对象

java 子类的构造函数都必须要super();吗?
public Son(String name) { super(name);\/\/必须调用,否则他会默认调用父类的无参构造函数,而父类的无参构造函数已经被有参的覆盖,所以找不到 } }

子类要调用父类的方法,必须使用super关键字.对吗?
\/\/该方法为子类方法,非父类方法。public void aa(){ super.a(); \/\/Yes a():\/\/ Yes 等同 super.a();super.b(); \/\/Yes b(); \/\/Yes 等同 super.b();super.c(); \/\/ no 访问不到。c(); \/\/ NO 访问不到。} \/\/覆盖父类方法 protected void b(){ System.out.println("this...

JAVA中 子类与父类构造方法的关系 个人理解
一、父类含有无参构造函数 1、子类没有构造方法或者含有无参的构造方法:这种情况,都会默认地调用super()2、子类含有有参数构造方法:同样会在首句默认调用super() \/\/其实跟情况1类似 二、父类含有含参数的构造方法,不含无参数的构造方法:子类没得选择:子类必须申明一个构造方法(且含super...

Java中super关键字及super()的使用
9. 当子类想访问父类的属性或方法时,使用super.。10. 构造方法中this()和super()不能同时出现,均只能在第一行。11. 无论构造方法是否有this()或super(),实例化子类对象时,父类构造方法总会执行。12. super()在子类构造方法中用于调用父类构造方法,初始化父类特征。总结:super用于区分实例变...

为什么java会默认在构造器第一句加上super()
super()有回调的意思 子类继承了父类,你必须要写上构造方法(假如父类有些)然后你不需要对父类构造方法进行改动,或者前面部分直接照搬,那么你就可以直接用super();注:父类里面构造方法如果有其他参数 class father{ public father(){} public father(int i){} } 回调构造函数想用第一个:...

java中super的使用有哪三种情况
1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位.class Base { Base() { System.out.println("Base"); }} public class Checket extends Base { Checket() { super();\/\/调用父类的构造方法,一定要放在方法的首个语句 System.out.println("Checket");...

Java学习:super关键字详解
在Java编程中,`super`关键字起着至关重要的作用,主要用于访问和调用父类的成员。以下是`super`在不同场景下的具体应用:首先,当子类中存在与父类同名的属性时,使用`super`可以明确指定要访问的是父类的属性。如在子类`Dog`中,`super.getName()`确保调用了父类`Animal`的`name`属性,即使子类...

java中关键字super有什么作用?
在Java中,关键字"super"用于引用父类的成员变量、方法和构造方法。它有以下几种作用:访问父类的成员变量:通过使用"super"关键字,可以在子类中访问父类中的成员变量,即使在子类中有同名的成员变量。例如:调用父类的方法:通过使用"super"关键字,可以在子类中调用父类中的方法,即使在子类中有...

Java编程:super关键字详解
Java编程中,super关键字是访问父类属性和方法的重要工具。它允许子类引用并调用父类的方法、构造函数和变量。以下是super关键字的详细解释:1. 访问父类的属性与方法 使用super关键字,子类能够访问父类的属性与方法。例如,当子类希望访问父类的属性时,通过super关键字即可实现,如:上述代码中,Dog类...

java关于子类和父类构造方法的关系,犯迷糊!!
3、父类中显示定义了构造方法,却没有显示定义默认的无参数构造方法,那么子类定义任何构造方法中都需要通过super调用父类的构造方法 相关代码比较 1.public class Father {public void otherMethod(){}} public class Child extends Father { \/\/任意构造方法public Child(int b){System.out.println(b)...

相似回答