package com.shsxt.this02;
/*
-
this关键字 :代表当前对象
-
this在构造器的首行调用其他构造器(本类中的其他构思器)
-
this(参数)->匹配不同的构造器的参数
-
区分同名变量问题(成员变量与局部变量,参数之间同名问题)
-
this使用在构造器中,指代当前创建的对象
-
this使用在成员方法中,this指代当前调用成员方法的对象
-
默认发生就近原则
-
不存在同名变量|参数问题,变量就是指代成员,前面默认省略this.
-
1.调用构造器的时候this必须存在第一行才行
-
2.构造器之间不能相互调用
-
3.this不能使用在static修饰的内容中
*/
public class ThisDemo {
public static void main(String[] args) {
Person p=new Person(“张三”,18,true);
p.info();
Person p2=new Person(“lisi”);
Person p3=new Person(“王五”);
p2.info();
p3.info();p.test(222); p2.test(111);
}
}
class Person{
public String name;
public int age;
public boolean gender; //true->女 false->男
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name) {
this.name=name;
}
//给人的姓名,年龄赋值
public Person(String name,int age) {
//this("",100,false);
this.name=name;
this.age=age;
System.out.println("2个参数的构造器");
}
public Person(String name,int age,boolean gender) {
//上一个构造器就是给name,age赋值的
//选中当前行上下移动->alt+方向上下键
this(name,age); //调用其他构造器,本类 如果实参位置是变量,传递的就是变量的值
this.gender=gender;
System.out.println("三个参数的构造器");
}
//打印所有成员属性的值
public void info(){
System.out.println(name+"-->"+age+"-->"+gender);
}
public void test(int age){
//boolean gender=true;
System.out.println(this.age+","+gender); //默认就近原则
}
}