关于super和this

	几个月前,同事给出的一道思考题,为什么spuer.squals(this),结果为true,最近闲下来,各种搜罗,感觉弄清了事实真相。
	个人得出的结论是:super只是一个助记词,在字节码文件中,super是不存在的,当调用super.equals(this)的时候,最终的方法是this == this,所以,得到的结果是true。
	在jvm中,有四种方法执行机制,super.equals,是调用父类方法,在字节码文件中,指定的用invokespecial方式,这种方式,会将符号引用转换成直接引用,而调用子类本类的方法,会走invokevirtual ,这种机制的一种实现,网上资料指出是方法表。super.equals(this),在字节码文件中直接指向了父类的方法,而没有super的概念,但this,是每一个方法的默认参数,因此,super.equals(this),最终比较的是this == this.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值