Java中的this指针

2022-08-29 11:49:29 浏览数 (1)

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

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

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

@Author: twlkyao

代码语言:javascript复制
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(参数表)要出现在任何其他语句之前。

代码语言:javascript复制
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.cn/145750.html原文链接:https://javaforall.cn

0 人点赞