super()和this ()不能共存。否则编译时会报异常。

Constructorcall must be the first statement in a constructor

换句话说就是super()和this()都必须在构造方法的第一行。

this(有參数/无參数) 用于调用本类对应的构造函数

super(有參数/无參数) 用于调用父类对应的构造函数

并且在构造函数中,调用必须写在构造函数定义的第一行,不能在构造函数的后面使用。

一个构造函数定义中不能同一时候包含this调用和super调用,假设想同一时候包含的话,能够在this()调用的那个构造函数中首先进行super()调用。也能够把TestB()这种方法改动成非构造方法。在构造方法TestB(int i)中调用。

正确解释:The parent class' constructor needs to becalled before the subclass' constructor. This will ensure that if you call anymethods on the parent class in your constructor, the parent class has alreadybeen set up correctly.

翻译:之前父类的构造函数须要调用子类的构造函数。

这将确保假设你调用不论什么方法在父类构造函数,父类已经被正确设置。

2.错误:Implicit super constructor xx()
is undefined for default constructor. Must define an explicit constructor

 由于你的父类已经定义了一个有參的构造函数,此时编译器不会为你调用默认的构造函数。

当子类继承时,必须在自己的构造函数显式调用父类的构造函数。自己才干确保子类在初始化前父类会被实例化,

假设你父类中有无參的构造函数,子类就不会强制要求调用。即你写的那个就能够通过,

编译器会默认帮你调用父类的构造函数。 

按原来的思路,必须该成以下的:  

class Person {
protected String name;
protected int age;
//你已经定义了自己主动的构造函数,此时编译器不会为你创建默认的构造函数
public Person(String name,int age) {
this.name=name;
this.age=age;
}
public void print() {
System.out.println("Name:"+name+"/nAge:"+age);
}
}
/*由于父类的构造函数是有參的,所以编译不会为你自己主动调用默认的构造函数。此时。子类在自己的构造函数中必须显式的调用父类的构造函数 */
class Student extends Person {
public Student(){ //子类构造函数
//super(); 不行,由于你的父类没有无參的构造函数 super("a",1);
//显示调用父类的构造函数。并且必须是第一行调用
}
}
class Test {
public static void main(String args[]){
}
}


最新文章

  1. Supermap iCloudManager -负载均衡
  2. OpenCascade B-Spline Basis Function
  3. C语言末
  4. sprint3个人总结
  5. 使用filter获取http请求的出参以及入参
  6. SQL Server代理(5/12):理解SQL代理错误日志
  7. [CentOS7]安装mysql遇到的问题
  8. Match:Power Strings(POJ 2406)
  9. 读书笔记_Effective_C++_条款四十六:需要类型转换时请为模板定义非成员函数
  10. JavaWeb基础: 学习大纲
  11. win7x64安装wince6
  12. BeanUtils--内省加强
  13. 教你Ant安装和配置
  14. 预览github项目的html文件新方法
  15. TCP/IP协议全解析 三次握手与四次挥手[转]
  16. js压缩上传图片
  17. javascript xml字符串转为json对象
  18. 从Linux内核角度看中间人攻击(ARP欺骗)并利用Python scapy实现
  19. PAT 1019 数字黑洞
  20. GBK-----UTF-8编码格式问题浅析

热门文章

  1. 主流框架(SSH及SSM)配置文件的模板头文件
  2. java开发必背API
  3. adt-bundle-windows加入NDK支持
  4. 50个Android开发技巧(12 为控件加入圆角边框)
  5. Kettle的概念学习系列之Kettle是什么?(一)
  6. springMVC接受对象实体并且对象实体里面又有对象集合方式
  7. inkscape
  8. 004.ES2015和ES2016新特性--块级作用域变量
  9. js&jQ判断checkbox表单是否被选中
  10. js+css实现全局loading加载