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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 采用CreateThread()创建多线程程序[通俗易懂]

    采用CreateThread()创建多线程程序[通俗易懂]采用CreateThread()创建多线程程序在window环境下,Win32提供了一系列的API函数来完成线程的创建、挂起、恢复、终结以及通信等工作:1、主要的函数列表:序号函数名功能1CreateThread()创建一个新线程2ExitThread()正

    2022年7月11日
    22
  • node版本如何升级

    node版本如何升级YouareusingNodev8.4.0,butthisversionofvue-clirequiresNode>=8.9.PleaseupgradeyourNodeversion.然后再用node-v,发现在本地的node版本是v8.4.0,有点老了,要升级了。可是,node怎么升级呢?有点慌…

    2022年7月16日
    33
  • Hadoop生态系统常用组件导图

    Hadoop生态系统常用组件导图Hadoop生态系统主要组件导图:看大图

    2022年5月19日
    36
  • DVWA登录出现allow_url_fopen = On allow_url_include = On的错误

    DVWA登录出现allow_url_fopen = On allow_url_include = On的错误进入到DVWA页面中:点击下图中按钮Creat/ResetDatabase创建数据库:出现如下错误提示:CouldnotconnecttotheMySQLservice.Pleasechecktheconfigfile.12意思是:无法连接到MySQL服务。请检查你的config文件。问题解决此时我们找到config文件下的config.inc.php文件打开进行操作,将$DVWA[‘db_password’]改为和phpstudy_pro中数据

    2022年7月16日
    16
  • docker部署redis哨兵集群_redis部署安装

    docker部署redis哨兵集群_redis部署安装Docker安装Docker部署redis在dockerhub上可以看到有redis的官方镜像不去网站,也可以通过如下命令查看有那些镜像可用Dockersearch命令dockersearchredis拉取redis镜像Dockerpull命令这里我们拉取官方的最新版本的镜像:dockerpullredis:latest查看本地镜像Dockerimages命令有redis和hello-world运行容器Dockerrun命令d

    2022年10月18日
    3
  • 背包九讲Java版本

    背包九讲Java版本packagedp;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;/***背包九讲**@ProjectName:algorithm*@Package:dp*@Description:TODO*@Author:bipa*@Date:2022/1/88:00*/publicclassPack{/***01背包(

    2022年6月28日
    23

发表回复

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

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