java中this的N种使用方法
this可能是几乎所有有一点面向对象思想的语言都会引用到的变量,java自然不例外。只是,this有多少种用法,我也不知道了,让我们来see see。
由简入奢! 易。
来个例子说明下:
public class DebugerTest {
public static void main(String[] args) {
UserExample samp1 = new UserExample("amy");
System.out.println("who are u? ");
System.out.println(samp1.whoAreU());
System.out.println("intro yourself?");
System.out.println(samp1.introYourself());
}
}
class UserExample {
private String name;
private Integer age;
private MyDoll myDoll;
public UserExample() {
this(null);
}
// 3. 调用本类的其他构造方法
public UserExample(String name) {
this(name, -1);
}
public UserExample(String name, Integer age) {
this.name = name;
this.age = age;
this.myDoll = new MyDoll("prize");
}
// 2. 调用本类属性
public void changeMyName(String name) {
this.name = name;
}
public void changeMyAge(Integer age) {
this.age = age;
}
public String whoAreU() {
return "I am " + name + ". ";
}
public String haoOldAreU() {
return "i am " + age + " old.";
}
// 1. 调用本类方法
public String introYourself() {
return this.whoAreU() +
this.haoOldAreU() +
"\r\n whoAmI@ " + this.myDoll.whoAmI() +
"\r\n whoAreSuper@ " + this.myDoll.whoAreSuper();
}
class MyDoll {
private String name;
public MyDoll(String name) {
this.name = name;
}
public void changeMyName(String name) {
this.name = name;
}
// 5. 隐藏式的调用
public String whoAmI() {
return whoAreU();
}
public String whoAreU() {
return "I am a Doll, my name is " + name + ". ";
}
// 4. 调用父类的或指定的其他的类的同名方法
public String whoAreSuper() {
return "super is " + UserExample.this.whoAreU() + ". ";
}
}
}
1. 调用本类方法,表达更清晰
public String introYourself() {
return this.whoAreU() + this.haoOldAreU();
}
2. 调用本类属性,基本功亮出来
public void changeMyName(String name) {
this.name = name;
}
3. 调用本类的其他构造方法,更灵活
public UserExample(String name) {
this(name, -1);
}
4. 调用父类的或指定的其他的类的同名方法,为避免歧义而生的方法
public String whoAreSuper() {
return "super is " + UserExample.this.whoAreU() + ". ";
}
5. 隐藏式的调用,为了写代码方便(更常用),不指定范围,java会在全类范围内向上查找变量或方法
public String whoAmI() {
return whoAreU();
}
以上样例输出结果如下所示:

this是个基本的关键字,我们平时也一直在用,只是也不一定所有同学都清楚怎么用。
越是基础的,越是厉害的!
java中this的N种使用方法的更多相关文章
- 【转载】JAVA中线程的两种实现方法-实现Runnable接口和继承Thread类
转自: http://blog.csdn.net/sunguangran/article/details/6069317 非常感谢原作者,整理的这么详细. 在java中可有两种方式实现多线程,一种是继 ...
- Java中super的几种使用方法并与this的差别
1. 子类的构造函数假设要引用super的话,必须把super放在函数的首位. class Base { Base() { System.out.println("Base" ...
- Java中Map的三种遍历方法
Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历. 告诉您们一个小秘密: (下↓面是测试代码,最爱看 ...
- JAVA 中数组的几种排序方法
1.数组的冒泡排序 public void bubbleSort(int a[]) { int n = a.length; for (int i = 0; i < n - ...
- java中String的21种使用方法
(构造函数必须new出来) * public String (char[] vaue) 将一个字符数组变成字符串(构造函数) * public Stri ...
- java中需要关注的3大方面内容/Java中创建对象的几种方法:
1)垃圾回收 2)内存管理 3)性能优化 Java中创建对象的几种方法: 1)使用new关键字,创建相应的对象 2)通过Class下面的new Instance创建相应的对象 3)使用I/O流读取相应 ...
- java中遍历Map几种方法
java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点. 先初始化一个map: publ ...
- Java中创建对象的5种方法
将会列举5种方法去创建 Java 对象,以及他们如何与构造函数交互,并且会有介绍如何去使用这些方法的示例. 作为一个 Java 开发人员,我们每天都会创建大量的 Java 对象,但是我们通常会使用依赖 ...
- Java中创建对象的几种方式
Java中创建对象的五种方式: 作为java开发者,我们每天创建很多对象,但是我们通常使用依赖注入的方式管理系统,比如:Spring去创建对象,然而这里有很多创建对象的方法:使用New关键字.使用Cl ...
随机推荐
- openstack-HTTP exception thrown: Maximum number of ports exceeded错误解决方案
最近几天什么都没动无法创建云主机了,经过一番查询 1.查日志 /data/jumpserver/logs 得到错误 HTTP exception thrown: Maximum number of p ...
- identityserver4 代码系列
链接:https://pan.baidu.com/s/1ePLwUxGpIPObwA8nnfDT9w 提取码:gr0x
- AX_DataSource
for (custInvoiceJourLocal = custInvoiceJour_ds.getFirst(true) ? custInvoiceJour_ds.getFirst(true) : ...
- VB批量替换文本字符
Private Sub Command1_Click()Open App.Path & "\abc.txt" For Binary As #1a = Input(LOF(1 ...
- 【机器学习】随机森林 Random Forest 得到模型后,评估参数重要性
在得出random forest 模型后,评估参数重要性 importance() 示例如下 特征重要性评价标准 %IncMSE 是 increase in MSE.就是对每一个变量 比如 X1 随机 ...
- 关于U3D的.SDK对接
1,SDK对接原理:https://www.cnblogs.com/msxh/p/7220741.html 2,Unity ADS对接:https://blog.csdn.net/chenluwolf ...
- Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again
Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again https://ac.nowcoder.com/acm/contest/700/I 时间限制:C/C++ 1 ...
- 【翻译】Flume 1.8.0 User Guide(用户指南) source
翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...
- 在Java中使用Socket模拟客户端和服务端(多线程)
1:Socket与ServerSocket的交互 2.Socket和ServerSocket介绍 Socket 构造函数 Socket() Socket(InetAddress address, in ...
- js浮点数加减乘除精度不准确
做个记录,以备不时之需 //加法 Number.prototype.add = function(arg){ var r1,r2,m; try{r1=this.toString().split(&qu ...