分享

Java学习笔记:详解this关键字

 司马小贼 2017-10-19

this关键字在Java中表示以下概念:

|·调用类中的属性:this.属性;

|·调用类中的方法:this.方法();

|·调用类中的构造:this();

|·表示当前对象

1:(调用类中的属性和方法)

class Person{

   private String name;

   private int age;

   public Person(String name, int age){

      this.setName(name);  //调用类中的方法

      this.setAge(age);

   }

   public void setName(String name){

      this.name = name;    //调用类中的属性

   }

   public void setAge(int age){

      this.age = age;

   }

   public String getName(){

      return this.name;

   }

   public int getAge(){

      return this.age;

   }

}

public class Test{

   public static void main(String [] args){

      Person per = new Person("张三",30);

         System.out.println("姓名:" + per.getName() + "年龄:" + per.getAge());

      }

}

//使用this关键字完美解决属性name与局部变量name的命名冲突。并且让程序更加通俗易懂。

2:(调用类中的构造:)

现要求无论调用哪一个构造方法,都必须打印 我被调用了!

class Person{

   private String name;

   private int age;

   public Person(){  //无参构造

      System.out.println("我被调用了!");

   }

   public Person(String name){

      this();   //调用无参构造

      this.setName(name);

   }

   public Person(String name, int age){

      this(name);  //调用有一个参数的构造

      this.setName(name);

      this.setAge(age);

   }

   public void setName(String name){

       this.name = name;

   }

   public void setAge(int age){

      this.age = age;

   }

   public String getName(){

      return this.name;

   }

   public int getAge(){

      return this.age;

   }

}

public class Test{

   public static void main(String [] args){

      Person per = new Person("张三",30);

      System.out.println("姓名:" + per.getName() + "年龄:" + per.getAge());

   }

}

//以上代码无论是哪一个构造方法被调用,都会打印输出 我被调用了!而且提高了代码的重用性。

//调用类中的构造时,this()必须写在构造方法的第一行,并且在所有的构造中至少有一个不被调用。

//使用this()调用类中的构造方法,代码量减少了,代码的重用性提高了。

3:(表示当前对象)

class Person{

   private String name;

   private int age;

   public Person(String name, int age){

      this.name = name;

      this.age = age;

   }

   public String getName(){

      return this.name;

   }

   public int getAge(){

      return this.age;

   }

   public boolean compare(Person per){

      if(this.name.equals(per.name) && this.age == per.age){

      return true;

   }

   else{

      return false;

   }

   }

}

public class Test{

   public static void main(String [] args){

      Person per1 = new Person("张三",30);

      Person per2 = new Person("张三",30);

      if(per1.compare(per2)){

         System.out.println("内容相等");

      }

      else{

         System.out.println("内容不相等");

      }

  }

}

 

//当前对象:当前正在调用类中方法的对象称为当前对象

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多