java类的继承this调用属性问题

本文探讨了Java中类继承时this关键字的使用。当子类重写父类方法,父类会动态绑定实现多态。如果子类未重写父类方法,this将指向父类,但调用子类重写的方法时,会动态绑定到子类。总结来说,变量调用的方法取决于实例类型,而非变量类型。
摘要由CSDN通过智能技术生成

由于这个地方我有点乱,所以记录一下。

public class NotOverriding extends Base{
	private int i=2;
	public static void main(String[] args){
		NotOverriding no=new NotOverriding();
		no.increase();
		System.out.println(no.i);
		System.out.println(no.getI());
	}
}
class Base{
	private int i=100;
	public void increase(){
		this.i++;
	}
	public int getI(){
		return this.i;
	}
}

输出结果:

2
101

原因:当有类的继承时,父类会先检查子类有无重写本类方法,当子类重写父类方法,父类会动态绑定实现多态。而当子类没有重写父类方法时,便会调用父类的原方法,而此时方法里的this则是指父类本身,若此时在这个原方法内又调用一个子类重写了的方法,则又会动态绑定实现子类的方法,此时则指向子类。

public class NotOverriding extends Base{
	private int i=2;
	public void decline() {
		this.i--;
	}
	public int getI(){
		return this.i;
	}
	public int getSuperI() {
		return super.getI();
	}
	public static void m
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值