小乔注:java关键字this
java中当一个对象创建后,java虚拟机就会给这个对象分配一个指向自己的指针,称为this。this随实例化对象而产生,因此this只用于非静态方法体内。主要有以下四点应用:
1.调用当前类的成员变量。如:this.name;//访问本类中的成员变量name
2.调用当前类的成员方法。如:this.fun(params...);//访问本类中参数为params...的成员方法fun
3.表示当前类对象的引用。如:return this;//返回当前类对象的值
4.在当前类的构造方法中调用本类的其他构造方法。如:this(params...);//调用本类中参数为params...的构造方法
下面一一附代码说明:
1.
public class Student { String name; private void SetName(String name){ this.name=name; } }
如上述代码,若局部变量与成员变量同名时,便显示出了this的作用。this关键字引用的便是成员变量,一目了然,便是将形参name赋给了成员变量name
public class Student { private void out1(){ System.out.print("123"); } private void out2(){ this.out1(); } }
如上述代码,out2()方法中利用this关键字调用了成员方法out1();需要注意的是,this关键字访问类的成员变量和成员函数时不受访问权限的控制,可以访问本类中包括private修饰的所有成员变量和方法。也可以通过this访问本类的static成员,不过由于static成员可以通过类名直接访问,如果通过this来访问会有警告信息。
3.
public class Student { private String name; public Student setName(String name){ this.name=name; return this; } }
如上述代码,调用setName方法后,将形参赋给成员变量后,return this表示返回了Student对象引用。注意,return this返回的是调用this所处方法的那个对象的引用。切勿混淆。
4.
public class Student { private String name; private char sex; public Student(){ this('男'); this.name = "周瑜"; } public Student(char sex){ this.sex=sex; } }
如上述代码,其中this('男')就是在第一个构造方法中调用了第二个构造方法,即没有参数的那个调用了有参数的那个。需要注意到是,其只能放在该构造方法体内的第一行,且不支持递归调用,即不能间接或直接地调用本身。
大乔注:若该类有派生类,则类中出现的关键字this的作用需注意:
1.在调用成员方法时,如果该方法被子类重写,则调用的是子类的成员方法,未被重写,则调用父类的成员方法。
2.return this中的this始终代表的是子类对象的引用。
3.调用成员变量和构造方法时,均是父类本类的,并无变化。
最新文章
- (转载)CentOS6下 源代码方式安装openERP7.0
- 在vs2005中使用AnkhSvn服务端IP改变无法连接
- 可视化PK纯代码
- flashback database 基本介绍一
- jquery 插件页面回到顶部
- cocos2d-x学习笔记1——Cocos2D-x 中的核心类
- Installing Ubuntu on a Pre-Installed Windows 8 (64-bit) System (UEFI Supported)
- 安卓4.2原生rom状态栏显示运营商
- WPF中TextBox限制输入不起作用的问题
- why constrained regression and Regularized regression equivalent
- 为什么说android UI操作不是线程安全的
- python3三角函数
- java版微信公众号支付(H5调微信内置API)
- 蓝桥杯近三年初赛题之一(15年b组)
- javascript的常用事件
- web机试
- CF418D Big Problems for Organizers 树的直径、ST表
- php常见问题-foreach和引用造成的问题。
- 【IIS错误 - HTTP 错误 500.19】HTTP 错误 500.19- Internal Server Error 错误解决方法(一)
- MySQL 各种主流 SQLServer 迁移到 MySQL 工具对比
热门文章
- SVN 安装与使用教程总结
- iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备
- 对Java中堆栈的解析
- 【java】io流之字节流转为字符流:java.io.OutputStreamWriter和java.io.InputStreamReader
- 数据分析与展示——Pandas数据特征分析
- IOS学习2——Xcode快捷键大全
- UIImage类方法总结及UIImage生成方法对比
- Linux 学习记录 三(Vim 文书编辑器).
- bzoj 4289: PA2012 Tax
- js 自定义html标签属性