Java中的this指针

Java中的this指针AlienTechforbetterlife!~

大家好,又见面了,我是你们的朋友全栈君。

    在Java中,提到this谁都不会陌生,这里再简单整理下,备忘。

    Java中,一般来说this指针指的是当前正在访问的这段代码的对象,但是如果在内部类中需要使用外部类中的对象,这时就需要使用外部类的类名进行限定。这种方式在Android开发中也比较常见

    @Author: twlkyao

package twlkyao;

public class A { 
    public A() { 
        Inner inner = new Inner();
        inner.outer(); // call the inner class's outer method.
        this.outer(); // call A's outer method.
    } 
    
    public void outer() { 
        System.out.println("outer run");
    } 

    class Inner {
        public void outer(){
            System.out.println("inner run");
            A.this.outer(); // call A's outer method.
            System.out.println("--------");
        }
    }
    
    public static void main(String[] args) {
    	A a = new A();
    }
} 

    Inner是内部类,访问类A中的outer()方法,又由于匿名内部类中有同样的方法,所以需要使用A的this指针进行限定。

    输出结果为:

inner run
outer run
——–
outer run

    另外,在构造方法中,经常使用this(参数表)来调用参数多的构造方法(和Swift中的convenience initializer类似,在Swift中,convenience initializer必须调用或者说代理给designated initializer),并且Java要求在构造方法中,this(参数表)要出现在任何其他语句之前。

public class Circle {
    	private double radius;
    	
    	public Circle(double radius) {
    		this.radius = radius;
    	}
    	
    	public Circle() {
    		this(1.0); // call the upper initializer.
    		this.radius = 2.0; // just to indicate that the this(parameters...) must be called first.
    	}
    }

    在如上代码中,无参构造函数,调用有参构造函数。在无参构造函数中再次修改radius只是为了说明在构造方法中,this(参数表)要出现在任何其他语句之前。

    参考资料:

    http://bbs.csdn.net/topics/260050701

    《Java语言程序设计——基础篇》


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145750.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php发现一个神奇的函数[通俗易懂]

    php发现一个神奇的函数

    2022年2月9日
    38
  • OpenResty 最佳实践学习–实战演习笔记(4)

    本篇简单记录openresty连接redis数据库和缓存的一些东西,也基本上是官网上的一些例子和知识,作为整理方便自己后续回顾!openresty连接redis因为我本地服务器安装了redis,这里只简单记录连接redis的过程!1.启动redis服务[root@localhost ~]# /usr/local/bin/redis-server /root/dufy/redis/redis-3.0.

    2022年2月26日
    76
  • MessageDigest用法[通俗易懂]

    MessageDigest用法[通俗易懂]为什么要使用MessageDigest?某些金融行业用于进行简单的密码加密。例如:需求某银行对数据库账户取款密码加密。为了保护客户信息的安全,客户取款密码只能客户自己知道,银行方面对此加密,加密后数据保存的数据库。此时可以用MessageDigest进行加密,以及后续其他方案再次加密。MessageDigest是什么?java.security.MessageDigest类…

    2022年7月11日
    16
  • JS 面试题 大全

    JS 面试题 大全1、介绍一下js的数据类型有哪些,值是如何存储的?2、说一下js的数据类型的转换都有哪些?3、如何去判断js数据类型?4、介绍js有哪些内置对象?5、javascript创建对象的几种方式?6、js获取原型的方法?7、什么是闭包,为什么要用它?8、三种事件模型是什么?9、哪些操作会造成内存泄漏?10、简述javascript中this的指向?![在这里插入图片描述](https://img-blog.csdnimg.cn/2021032219142296.png

    2022年8月26日
    7
  • linux下定时执行脚本[通俗易懂]

    linux下定时执行脚本[通俗易懂]1.安装crontabyuminstall vixie-cronyuminstallcrontab2.启动crontab服务servicecrond start用以下的方法启动、关闭这个cron服务: servicecrondstart//启动服务 servicecrondstop//关闭服务 servicecrondrestart//…

    2022年7月17日
    15
  • nessus使用教程扫描_Nessus扫描IP无结果

    nessus使用教程扫描_Nessus扫描IP无结果转载:https://www.cnblogs.com/youcanch/articles/5671238.htmlNessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描。Nessus也是渗透测试重要工具之一。所…

    2022年10月19日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号