学习内容来自B站韩顺平。
动态绑定机制核心:
形如:A a=new B();
属性看编译类型(左方的A类),方法看运行类型(右方的B类)。
如以下代码:
结果:
40
50
分析:
使用了B类中的属性 i 和方法sum、sum1。(i 为 属性对象a动态绑定声明处的 i(即为B类),方法动态绑定运行类的方法(还是B类))
如果将B类中的sum方法省略再运行
结果:30
50
分析:根据继承的特性会再父类A中寻找sum方法,而由于A类中sum方法使用了getI()方法,对象a动态绑定了类B(运行类型)的方法getI(),而B中getI含有属性I,a动态绑定声明处的属性(I)所以A类中的 i 仍然来自于B类