java 的动态绑定机制(学习)

文章通过一个Java代码示例解释了动态绑定机制。在调用对象方法时,方法会与运行时类型绑定。当调用`sum()`方法时,即使对象是`A`的引用但实际是`B`的实例,会执行`B`类中的`getI()`方法,得到20,从而得出结果30。然而,对于属性访问,如`sum1()`,没有动态绑定,直接访问父类的`i`属性,返回10,得出结果20。
摘要由CSDN通过智能技术生成

动态绑定机制:

1.当调用对象方法的时候,该方法会和运行类型绑定

2.当调用对象属性时,则没有该机制

public static void main(String [] args) {
		A a = new B();
		System.out.println(a.sum());//40———>10+20
		System.out.println(a.sum1());//30------>10+10
		
	}
}
class A{//父类
	public int i =10;
	public int sum() {
		return getI()+10;
	}
	public int sum1() {
		return i+10;
	}
	public int getI() {
		return i;
	}
}
class B extends A{//子类
	public int i =20;
	public int sum() {
		return getI()+20;
	}
	public int sum1() {
		return i+10;
	}
	public int getI() {
		return i;
	}

运用动态绑定机制:

当去掉B sum()方法时,向上找父类的sum(),找到并运行:getI()方法符合动态绑定机制-->看运行类型为B---->则运行B中的getI方法,获取20;20+10=30

当去掉B sum1()方法时,向上找父类的sum1(),找到并运行;当调用属性i时,不符合动态绑定机制,则调到父类属性i=10;return 10+10 =20

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值