7-1 构造方法 (5 分)
请补充以下代码,完成输出要求。
public class Main {
public Main(){
System.out.println("构造方法一被调用了");
}
public Main(int x){
this();
System.out.println("构造方法二被调用了");
}
public Main(boolean b){
this(1);
System.out.println("构造方法三被调用了");
}
public static void main(String[] args) {
}
}
输入格式:
无
输出格式:
输出以下三行: 构造方法一被调用了 构造方法二被调用了 构造方法三被调用了
输入样例:
无
输出样例:
构造方法一被调用了
构造方法二被调用了
构造方法三被调用了
public class Main {
public Main(){
System.out.println("构造方法一被调用了");
}
public Main(int x){
this();
System.out.println("构造方法二被调用了");
}
public Main(boolean b){
this(1);
System.out.println("构造方法三被调用了");
}
public static void main(String[] args) {
Main in=new Main(true)
}
}
Main后面的(true)主要是进行调用方法三
方法三中的this(1)是在调用方法二 方法二中的this()是在调用方法一
依次输出为
构造方法一被调用了
构造方法二被调用了
构造方法三被调用了
这里用到的是 this的用法
Java有一个名为 this 的关键字。它是对类的当前实例的引用。
它只能在实例的上下文中使用。
当实例变量或类变量被具有相同名称的另一个变量隐藏时,我们需要使用关键字this限定一个实例变量,并使用类名称定义一个类变量。
使用 this 来区分当前对象。
Java 中为解决变量的命名冲突和不确定性问题,引入关键字 this 代表其所在方法的当前对象的引用:
构造方法中指该构造器所创建的新对象;
方法中指调用该方法的对象;
在类本身的方法或构造器中引用该类的实例变量(全局变量)和方法。
this 只能用在构造器或者方法中,用于获得调用当前的构造器方法的对象引用。可以和任何的对象引用一样来处理这个this对象。
说明:
当实例变量和局部变量重名,JAVA 平台会按照先局部变量、后实例变量的顺序寻找。即,方法中使用到的变量的寻找规律是先找局部变量,再找实例变量。如果没用找到,将会有一个编译错误而无法通过编译。
如果使用 this.a,则不会在方法(局部变量)中寻找变量 a ,而是直接去实例变量中去寻找,如果寻找不到,则会有一个编译错误。
在一个方法内,如果没有出现局部变量和实例变量重名的情况下,是否使用 this 关键字是没有区别的。
在同一个类中,Java 普通方法的互相调用可以省略 this. ,而直接使用方法名 + 参数。因为 Java 编译器会帮我们加上。