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

posted @ 2017-11-16 16:17  BirdieForLove  阅读(181)  评论(0编辑  收藏  举报