java测试父子类中的锁对象

本来想测试一下子类中调用父类方法,如果都是同步方法,锁对象是否相同。后来还发现很多理解不够深入的地方,一起写代码测试了一下。

//测试锁对象
class Father {
	int a = 1; 
	synchronized void doX() {
		System.out.println(this.toString());
		System.out.println(super.toString());//Object的toString输出
		this.doY();//如果this是Son,调用Son的方法,多态后期绑定
		System.out.println(this.getClass());
		System.out.println(this.a);//对域属性的调用时候,通过this区别域内属性或者方法中传入的参数
		//*** 理解为,面向对象的每个方法,是隐含了一个this,向this发送消息。
		//*** 而域没有这种说法,所以this.a引用class Father 类中的域
		//*** 方法可以多态,域没有多态
	}

	synchronized void doY(){
		System.out.println("do Father");
	}
	
	@Override
	public String toString() {
		return "Father";
	}
}

public class Son extends Father {
	int a = 2;
	synchronized void doX() {
		System.out.println(this);
		System.out.println(super.toString());
		//不能直接输出super,必须用super.xx();
		//因为super可能是一个抽象类,无法被new出来,所以只能调用具体的方法。或者可以理解为super根本不是一个实例化的对象,只是让你调用父类方法的一个介质
		super.doX();//子类调用父类的方法,调用者还是子类
	};
	
	synchronized void doY(){
		System.out.println("do Son");
	}

	@Override
	public String toString() {
		return "Son";
	}

	public static void main(String[] args) {
		Father f = new Son();
		f.doX();
	}
}

输出:

Son
Father
Son
Son@37f2ae62
do Son
class Son
1

注释写了一下,自以为是的解释~





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值