00048_this关键字

1、this调用构造方法

  (1)构造方法之间的调用,可以通过this关键字来完成;

  (2)构造方法调用格式

this(参数列表);

  (3)小案例

 1 class Person {
 2     // Person的成员属性
 3     private int age;
 4     private String name;
 5 
 6     // 无参数的构造方法
 7     Person() {
 8     }
 9 
10     // 给姓名初始化的构造方法
11     Person(String nm) {
12         name = nm;
13     }
14 
15     // 给姓名和年龄初始化的构造方法
16     Person(String nm, int a) {
17         // 由于已经存在给姓名进行初始化的构造方法 name = nm;因此只需要调用即可
18         // 调用其他构造方法,需要通过this关键字来调用
19         this(nm);
20         // 给年龄初始化
21         age = a;
22     }
23 }

2、成员变量和局部变量同名问题

  当在方法中出现了局部变量和成员变量同名的时候,可以在成员变量名前面加上this.来区别成员变量和局部变量。

 1 class Person {
 2     private int age;
 3     private String name;
 4 
 5     // 给姓名和年龄初始化的构造方法
 6     Person(String name, int age) {
 7         // 当需要访问成员变量是,只需要在成员变量前面加上this.即可
 8         this.name = name;
 9         this.age = age;
10     }
11 
12     public void speak() {
13         System.out.println("name=" + this.name + ",age=" + this.age);
14     }
15 }
16 
17 class PersonDemo {
18     public static void main(String[] args) {
19         Person p = new Person("张三", 23);
20         p.speak();
21     }
22 }

3、在Person类中定义功能,判断两个人是否是同龄人

 1 class Person {
 2     private int age;
 3     private String name;
 4 
 5     // 给姓名和年龄初始化的构造方法
 6     Person(String name, int age) {
 7         // 当需要访问成员变量是,只需要在成员变量前面加上this.即可
 8         this.name = name;
 9         this.age = age;
10     }
11 
12     public void speak() {
13         System.out.println("name=" + this.name + ",age=" + this.age);
14     }
15 
16     // 判断是否为同龄人
17     public boolean equalsAge(Person p) {
18         // 使用当前调用该equalsAge方法对象的age和传递进来p的age进行比较
19         // 由于无法确定具体是哪一个对象调用equalsAge方法,这里就可以使用this来代替
20         /*
21          * if(this.age == p.age) { return true; } return false;
22          */
23         return this.age = p.age;
24     }
25 }

 

posted @ 2017-12-21 19:26  gzdlh  阅读(120)  评论(0)    收藏  举报