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 }