可以调用this关键字的结构
属性、方法、构造器
this可以理解为:当前对象
一般情况下我们都省略了关键字,但如果方法的形参和属性同名时,必须使用this.变量的方法指明当前类的属性
当构造器的形参与类的属性同名时,必须使用this.变量的方法指明当前类的属性
this调用构造器
① 我们在类的构造器中,可以显式的使用"this(形参列表)"方式,调用本类中指定的其他构造器
② 构造器中不能通过"this(形参列表)“方式调用自己
③ 如果一个类中有n个构造器,则最多有 n - 1构造器中使用了"this(形参列表)”
④ 规定:"this(形参列表)“必须声明在当前构造器的首行
⑤ 构造器内部,最多只能声明一个"this(形参列表)”,用来调用其他的构造器
举例
package object_oriented2;
public class Thiskey {
public static void main(String[] args) {
Boy boy = new Boy("罗密欧", 21);
boy.shout();
Girl girl = new Girl("朱丽叶", 18);
girl.marry(boy);
Girl girl1 = new Girl("祝英台",19);
int compare = girl.compare(girl1);
if(compare > 0){
System.out.println(girl.getname() + "大");
}else if(compare < 0){
System.out.println(girl1.getname() + "大");
}else{
System.out.println("一样大");
}
}
}
class Boy{
private String name;
private int age;
public Boy(String name,int age) {
this.name = name;
this.age = age;
}
public void setname(String name) {
this.name = name;
}
public String getname() {
return name;
}
public void setage(int age) {
this.age = age;
}
public int getage() {
return age;
}
public void marry(Girl girl) {
System.out.println("我想娶" + girl.getname());
}
public void shout() {
if(this.age >= 22){
System.out.println("你可以去合法登记结婚了!");
}else{
System.out.println("先多谈谈恋爱~~");
}
}
}
class Girl{
private String name;
private int age;
public Girl(String name,int age) {
this.name = name;
this.age = age;
}
public void setname(String name) {
this.name = name;
}
public String getname() {
return name;
}
public void setage(int age) {
this.age = age;
}
public int getage() {
return age;
}
public void marry(Boy boy) {
System.out.println("我想嫁给" + boy.getname());
boy.marry(this);
}
public int compare(Girl girl) {
return this.age - girl.age;
}
}