Java面向对象
完整代码
this关键字的作用:
Ø解决局部成员变量名重名问题给成员赋值
Ø代指当前对象
Ø在构造方法中可以调用本类中其他构造
Ø调用当前对象中其他成员方法
以上四种作用中解决局部成员变量名重名问题给成员赋值的作用最为常用将会注重介绍
其余四种作用可以仅作了解
解决局部成员变量名重名问题给成员赋值
错误示范
public WifeConcubine(String name) {
name=name;
System.out.println(name+"对象已被创建");
}
由于变量引用的就近原则 name=name本质上是自己对自己赋值 对象的name属性并没有被调用赋值
此时便需要this关键字来强制引用对象的属性
示范
public WifeConcubine(String name) {
this.name=name;
System.out.println(name+"对象已被创建");
}
加入this关键字便可以将构造参数的值赋给对象的属性
此时控制台输出
代指当前对象
当对象创建完成后 在构造方法或普通方法中this可以引用到对象的内存地址
比如
在WifeConcubine类中修改构造方法和flowerViewing方法中加入
System.out.println(this);
在主函数中加入打印xiuying对象的内存地址语句
System.out.println(xiuying);
public WifeConcubine(String name) {
System.out.println(this);//代指当前对象
this.name=name;
System.out.println(name+"对象已被创建");
}
public void flowerViewing() {
System.out.println("这是一个赏花的行为");
System.out.println(this);
}
//创建一个嫔妃对象 李秀影
WifeConcubine xiuying; //创建一个数据类型为 WifeConcubine 我们自己定义的一个类 可以当作数据类型来用
xiuying= new WifeConcubine("李秀影");//将李秀影对象进行实例化 取得对象所需要的属性及方法 可以理解为对对象进行赋值
System.out.println(xiuying);//用于验证
控制台输出
通过控制台的输出可知
this可以代指当前创建的对象
在构造方法中可以调用本类中其他构造
在构造方法中直接使用this可以条用其他构造方法
示例
在无参的构造方法中调用有参构造
public WifeConcubine() {
this("王梦竹");//调用有参构造方法
System.out.println("对象已被创建");
}
Simulation中创建一个嫔妃对象 王梦竹 同时会调用无参的构造方法 构造方法中this同时会调用有参构造对其进行赋值
//创建一个嫔妃对象 王梦竹 同时会调用无参的构造方法 构造方法中this同时会调用有参构造对其进行赋值
WifeConcubine mengzhu= new WifeConcubine();
控制台输出
注意事项
this() 在调用构造方法时候必须在第一行
调用当前对象中其他成员方法
this可以调用当前对象的其它方法
示例:
//赏花
public void flowerViewing() {
System.out.println("这是一个赏花的行为");
this.eat();
}
此时吃饭方法的输出语句将会输出两遍
控制台输出