package com.hspedu.dynamicbind_; import org.junit.Test; public class TestDynamicBind { @Test public void testDynamicBind() { Base sub = new Sub(); /** * 动态绑定机制:调用对象方法的时候,该方法会和对象的内存地址/运行类型绑定 * 所以sub调用方法时,绑定的运行类型时Sub, * Sub没有getSum则调用父类的getSum方法,其中调用getI方法则是调用Sub类的getI方法 */ System.out.println(sub.getSum()); } } class Base { int i = 10; public int getI() { return i; } public int getSum() { return getI() + 10; } } class Sub extends Base { int i = 20; public int getI() { return i; } }