Java_面向对象this关键字
this:代表的是一个对象 this就是当前对象的一个引用
代表的是哪个对象调用this所在的函数,this就代表哪个对象
类中包含构造函数内存执行流程
1.main函数进栈,类类型变量 P
2.通过new关键字在堆内存中开辟空间p
3.对象设定默认值 String默认值为null int默认值为0
4.通过新建的对象传进的值判断调用哪个构造函数
5.在栈内存中新建构造函数空间,设定传进的变量值
6.this关键字调用this所在的对象,给对象中的成员变量进行赋值
/*
this:代表的是一个对象 this就是当前对象的一个引用
代表的是哪个对象调用this所在的函数,this就代表哪个对象
this:表现形式一,当局部变量和成员变量同名的时候,可以用this来区分
表现形式二,构造函数之间的调用可以使用this关键字,后面跟上小括号,指定具体的实参即可明确要调用的构造函数。
特殊情况:注意,调用本类中构造函数的this语句必须定义在构造函数的第一行
因为初始化动作要先完成
*/
class Person
{
private String name;
private int age;
Person()
{
System.out.println("person run");
}
Person(String name)
{
/*
当成员变量和局部变量同名的时候,为了区分,可以使用一个关键字来完成。
关键字:this
*/
this.name = name;
}
Person(String s,int a)
{
name =s ;
age =a;
}
public void setName(String n)
{
name = n;
}
public String getName()
{
return name;
}
public void speak()
{
System.out.println(this.name+":"+this.age);
}
public void show()
{
this.speak();
}
/*
this什么时候用?
当定义功能时,功能内部使用到了调用该功能的对象
这时就用this来表示
*/
//需求:定义在Person类中定义一个比较方法,判断是否是同龄人。
/*
1明确结果:返回值为boolean
2明确未知内容:Person 因为是和任何一个Person对象比较其中的年龄
*/
public boolean compare(Person p)
{
//当前对象和传入的对象进行年龄的比较
//传入的对象用p来表示
//当前对象用this
/*if(this.age==p.age)
{
return true;
}
else
return false;*/
return this.age==p.age;
}
}
class ThisDemo
{
public static void main(String[] args)
{
Person p= new Person("xiaoqiang");
p.speak();
Person p1 = new Person("wangwu",29);
Person p2= new Person("Wangcai",34);
boolean b=p1.compare(p2);
p1.speak();
}
}
表现形式2