java-面向对象-this关键字

构造函数可以被私有化,被私有化后的构造函数不能在初始化对象

/*

this:看上去,是用于区分局部变量和成员变量同名的情况

 

this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象

 

*/

class Person

{

  private String name;

  private int age;

  Person(String name)

  {

    //name = name; //局部变量name和成员变量name名字相同,输出无结果

    // this为什么可以解决这个问题?

    // this到底代表的是什么?代表本类的对象,this代表它所在函数所属对象的引用:按个对象在调用this所在的函数,this就代表那个函数

    this.name = name;

   }

  Person(int age)

  {

    this.age = age;

  }

  Person(String name, int age)

  {

    this.name =name; // this在构造函数间的调用,这句等同于 this(name),也等同于p(name),这种调用方式必须放在构造函数的第一行

    this.age = age;

  }

  public void speak()

  {

    System.out.println("name="+this.name+"...age="+this.age);

  }

/*需求:给人定义一个用于比较年龄是否相同的功能,也就是是否是同龄人*/

  public boolean compare(Person p)

  {

    return this.age == p.age;

  }

}

 

class PersonDemo

{

  public static void main(String[] args)

  {

    Person p = new Person("list");

    p.speak();

  }

}

 

calss PersonDemo3

{

  public static void main(String[] args)

  { 

    Person p1 = new Person(20);

    Person p2 = new Person(24);

    boolean b = p1.compare(p2);

    System.out.println(b);

  }

}

}

posted @ 2019-10-15 15:20  故人心  阅读(136)  评论(0)    收藏  举报