Constructor call must be the first statement in a constructor
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[]){
}
}
Constructor call must be the first statement in a constructor的更多相关文章
- Java 错误:Constructor call must be the first statement in a constructor
今天用学校里的黑马程序员通Java语法 想到了:在有参构造函数中调用无参构造函数 语法是这样的: class Person{ private int age; public Person() { Sy ...
- Constructor Overloading in Java with examples 构造方法重载 Default constructor 默认构造器 缺省构造器 创建对象 类实例化
Providing Constructors for Your Classes (The Java™ Tutorials > Learning the Java Language > Cl ...
- 为什么js 的constructor中是无限循环嵌套:Foo.__proto__.constructor.prototype.constructor.prototype.constructor.prototype.xxx ?
constructor始终指向创建当前对象实例的(构造)函数. 任何函数都是Function类的一个实例 那么根据上述可知:任何函数的constructor属性都指向Function类,而Functi ...
- [Java] Java record
2-1 java中的封装 概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法类实现对隐藏信息的操作和访问. 好处: 1. 只能通过规定的方法访问数据 2. 隐藏类的实例 ...
- 面向对象编程(八)——this关键字
很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不清楚. this(隐式参数) 普通方法中,this总是指向当前调用该方法的对象. 构造方法中,this总是指向正要初始 ...
- 201521123039 《java程序设计》第三周学习总结
1.本周学习总结 2.书面作业 (1)代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; pu ...
- 201521123038 《Java程序设计》 第三周学习总结
201521123038 <Java程序设计> 第三周学习总结 1. 本周学习总结 附大图链接 http://naotu.baidu.com/file/5774caa2be710afbc0 ...
- 深入理解Java对象的创建过程:类的初始化与实例化
摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类 ...
- 【原】Java学习笔记017 - 面向对象
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 继承关系中的pri ...
随机推荐
- 基本配置及安全级别security-level
interface GigabitEthernet0/0 nameif outside //指定接口名称 security-level 0 //安全级别设置 ip address 1.1.1.2 ...
- Java基础学习总结(47)——JAVA输入输出流再回忆
一.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. Java的I/O流提供了 ...
- 游标和动态SQL
游标类别:静态游标(指在编译的时候,游标就与一个select语句进行了静态绑定的游标.这样的游标仅仅能作用于一个查询语句)和动态游标(就是希望我们的查询语句在执行的时候才跟游标绑定.为了使用动态游标, ...
- HOOK劫持自己
#include <stdio.h> #include <stdlib.h> #include <Windows.h> #include "detours ...
- elementUI 易错点
1.element table里面添加单选时,如果存在下拉框的筛选功能,那么每次下拉框筛选条件变化时 都得清空之前选中的信息,如果不数据更新后如果更新后的数据跟之前选中的相同 则会无法选中
- HD-ACM算法专攻系列(12)——Integer Inquiry
问题描述: 源码: import java.math.BigInteger; import java.util.*; public class Main { //主函数 public static v ...
- spm总体说明
目录 1.如何工作 2.何时使用 1.如何工作 sql plan baseline 是一个关联sql 语句的对象,设计会影响查询优化器生成执行计划,更具体的说,一个sql baseline包含其中的一 ...
- Codeforces 988F. Rain and Umbrellas
解题思路:动态规划 遍历点i,如果从前一个点i-1走到这个点i不需要伞,则疲劳值不变dp[i] = dp[i-1]. 如果前一个点i-1走到这一个点i需要伞,则从前面找一把伞. 即遍历前面的每个点j, ...
- Java数据库连接——PreparedStatement的使用
首先了解Statement和PreparedStatement的区别: 由此可见,一般使用PreparedStatement. 操作数据库SU(Course表),其中Course属性有Cno,Cnam ...
- springmvc两种非注解的处理器适配器
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...