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 ...
随机推荐
- hid.dll
hid.dll是USB的HID相关动态链接库文件,缺少它可能会造成usb设备无法正常使用.当你的电脑弹出提示“计算机缺少hid.dll”或“无法找到hid.dll Hkapi.dll HKComman ...
- Servlet获取 URL 地址
使用 ServletRequest 的如下方法 getContextPath 取得项目名 getServletPath 取得Servlet名 getPathInfo 取得Servlet后的URL名,不 ...
- Android学习(二)
学号 20189214 <Android程序设计>第七周学习总结 教材学习内容总结 监听 设置点击监听的5种方式 方法1:直接用匿名内部类 这是最常用的一种方法,直接setXXXListe ...
- c语言相关概念
2019-04-06 a文件 库是预编译的目标文件(object files)的集合,它们可被链接进程序.静态库以后缀为‘.a’的特殊的存档文件(archive file)存储. a文件转so文件:h ...
- 对Python选修课的期望
作为一个之前完全没有接触过任何计算机语言的人我对于Python完完全全是个小白,那么我就以一个菜鸟的角度来谈谈我对这门选修课的期望吧. ...
- 打开手机模拟器后adb devices查看不到设备连接
1.找到sdk\platform-tools目录下的adb.exe,将该adb.exe复制到模拟器安装目录下覆盖模拟器自带的adb.exe就可以了.
- angular的一些东西
每个人都知道在使用angular的时候只能有一个ng-app指令但是也可以手动创建,这样就可以写很多个模块 例: var app=angular.module('App',[]);var app1=a ...
- 浅谈nodejs和php
现在,Web开发公司和开发人员可以选择多种技术栈来构建Web应用程序.早期网络发展,不同的技术被用于前端和后端开发.但是,随着Node.js的发布,布局发生了变化,因为它允许开发人员使用 JavaSc ...
- GitHub学习途径
之前学习GitHub的一个pdf文件 作者是stormzhang 我觉得那个pdf教的很详细,我还没看完,正在学习中,学到了文件的clon和在本机如何更新GitHub的文件. 在此分享一下 下载链接h ...
- Linux---基础指令(一)
https://www.linuxprobe.com/chapter-02.html (Linux就要这么学) 一.执行查看帮助命令 date:date命令用于显示及设置系统的时间或日期,格式为“d ...