上次我们说到了this关键字现在我们继续说我们的this的用法
构造函数调用构造函数
如果为一个类谢了很多个构造函数,我们经常需要在一个构造函数中调用另一个构造函数,那么我们为不让代码出现冗余,我们可以通过this这个关键字来实现。
this关键字的意识就是说“当前对象”的意思。在一个构造函数中,为其赋予一个自变量的列表,那么this关键字会具有不同的含义:它会对与那个自变量列表相符的构建器进行明确的调用
public class Flower {
private int petalCount = 0;
private String s = new String();
Flower(int petals){
petalCount = petals;
System.out.println("构造函数 w/ int参数,petalCount =" + petalCount);
}
Flower(String ss){
System.out.println("构造函数 w/ String参数,s="+ss);
s = ss;
}
Flower(String s,int petals){
this(petals);//this(s);不能调用两次
this.s = s; //this的另一个用法
System.out.println("String&int args");
}
Flower(){
this("hi",47);
System.out.println("默认的构造函数(没有参数)");
}
void print(){ //不是在构造函数中
System.out.println("petalCount="+petalCount+"\ts="+s);
}
public static void main(String[] args){
Flower x =new Flower();
x.print();
}
}
在Flower(String s,int petals)这个构造函数中像我们说明了一个问题this关键字是可以调用构造函数但是不可调用两次,还有就是够赞函数调用的必须是我们我们第一次执行 的对象,不然编译器会报错。
同时这个例子也向我们展示了this关键字的另一个用途,我们定义了很多s这个变量,这么多的变量名相同我们在调用的时候很容易混淆,而我们可以通过this.s来引用数据,这样我们就可以清晰的使用变量了
而最后我们在print()中发现编译器不让我们再构造函数之外的任意一方法内部调用一个构造函数。