关键字:this
this调用属性和方法
/*
this关键字的使用:
1.this可以用来修饰:属性、方法、构造器
2.this修饰属性和方法:
this理解为:当前对象
2.1 在类的方法中,我们可以使用"this.属性"或“this.方法”的方式,调用
当前对象属性或方法。但是通常情况下,我们都选择省略“this.”。
特殊情况下,如果方法的形参和属性同名时,我们必须显式的使用this.变量
的方式,表明此变量是属性而不是形参
2.2 在类的构造器中,我们可以使用"this.属性"或“this.方法”的方式,调用
当前正在创建的对象属性或方法。但是通常情况下,我们都选择省略“this.”。
特殊情况下,如果方法的形参和属性同名时,我们必须显式的使用this.变量
的方式,表明此变量是属性而不是形参
*/
public class PersonTest {
public static void main(String[] args) {
Person p1 = new Person();
p1.setAge(1);
System.out.println(p1.getAge());
p1.eat();
}
}
class Person{
private String name;
private int age;
public Person(){
}
public Person(String name){
this.name=name;
}
public Person(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;//用this来区分age是属性还是形参,防止属性和形参同名
}
public int getAge(){
return age;
}
public void eat(){
System.out.println("人吃饭");
study();
}
public void study(){
System.out.println("人学习");
}
}
this调用构造器
this练习
Boy
public class Boy {
private String name;
private int age;
public Boy(){
}
public Boy(String name){
this.name=name;
}
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){//调用Girl类里面的girl对象
System.out.println("我想娶"+girl.getName());
}
public void shout(){
if(this.age>=22){
System.out.println("你可以登记结婚了");
}else{
System.out.println("先多谈恋爱");
}
}
}
Girl
public class Girl {
private String name;
private int age;
public Girl(){
};
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 marry(Boy boy){
System.out.println("我想嫁给"+boy.getName());
boy.marry(this);
}
public int compare(Girl girl){//返回正数:当前对象大,负数,当前对象小,0,相等
if(this.age> girl.age){
return 1;
}else if(this.age< girl.age){
return -1;
}else{
return 0;
}
}
}
Test
public class BGTest {
public static void main(String[] args) {
Boy boy = new Boy("Chen",21);
boy.shout();
Girl girl = new Girl("c",18);
girl.marry(boy);
Girl girl1 = new Girl("l", 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("一样大");
}
}
}