09- this和static

对象

this—static

this作用

根据this出现的位置不同,this作为对象的默认引用有两种情形:

> 1、在方法中,引用调用该方法的对象。

this关键字最重要的作用就是让类中一个非静态方法访问该类中另一个非静态方法或实例变量。
注意:
1、这里强调“非静态”的原因是虽然在实例方法中可以用this调用静态方法,但是开发中对静态方法调用的调用几乎都用类,而不用this,所以当在实例方法中调用静态方法时,静态方法前啥也不写。
2、类中静态方法之间的调用绝对不能出现this。(因为this代表对象,static调用static的时候,不一定有对象哦!)
3、一般情况下静态方法无论怎样都不能调用实例方法。
4、如果非要在静态方法中访问实例成员,需要在静态方法中定义一个类对象。然后让对象去调用实例成员。(很少用)

例如:

public class Fu01 {
	// 实例变量
	int a = 2; 
	// 实例方法1
    public void method1(){
        System.out.println("实例方法1");
    }
	// 实例方法2
    public void method2(){
        System.out.println("实例方法2");
        // 实例方法2中访问实例方法1
        this.method1(); // this可以省略
        this.a = 3;     // this可以省略
    }
    // 静态方法1
    public static void methodStatic1(){
    	System.out.println("静态方法1");
    	//method1(); // 错误,静态不能调用非静态
    	
    }
	 // 静态方法2
    public static void methodStatic2(){
    	System.out.println("静态方法2");
    	methodStatic1();
    }
}

    在真实生活中,实例对象的一个方法调用另一个方法的的情形是非常常见的。例如:吃饭方法依赖于拿筷子方法。这种依赖都是一个实例对象的方法之间的依赖。
    因此,java中允许对象的一个成员直接调用另一个成员,也就是可以省略掉this关键字。

> 2、构造器中,引用该构造器正在初始化的对象;

public class ThisInConstructor{
	// 定义一个成员变量
	public int foo1;
	public int foo2
	public ThisInConstrutor(){
		// 在构造器中定义一个局部变量foo
		int foo1 = 3;
		// 使用this代表该构造器正在初始化的对象
		// 下面的代码将会把该构造器正在初始化的对象的foo成员变量设为6.
		// 当成员变量和局部变量同名时,如果想访问成员变量时需要加上this
		this.foo1 = 6;	
		// 当成员变量和局部变量不同名时,如果想访问成员变量时this可加可不加。
		foo2 = 8;
		this.foo2 = 8;
	}

	public static void main(String[] args){
		// 所有使用ThisInConstrutor创建的对象的foo成员变量都将被设为6
		// 所有下面的代码将会输出6.
		ThisInConstrutor obj1 = new ThisInConstrutor();
		ThisInConstrutor obj2 = new ThisInConstrutor();
		System.out.println(obj1.foo); // 6
		System.out.println(obj2.foo); // 6
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值