1.正常情形
2.方法的动态绑定机制--------如果运行类有方法可调用,仍然优先调用运行类中的方法
我们把B类中的sum01() 注释掉,a调用sum01()时候发现运行类型B类中没有sum01(),然后向上查找到父类A中的sum01()方法,里面有一个getI()方法。由于方法的动态绑定机制,调用的getI()方法仍然为B类中的getI方法,B类中的getI()方法返回属性i,注意这次返回的属性i是B类中的属性i,因为调用的getI()方法就再B类中,所以就直接返回的也是B类中的方法
3.属性没有动态绑定机制--------在哪个类中声明就调用哪个类的属性
这次我们把B类中的sum01() 和sum02()方法都注释掉,a.sum01()结果同前
a调用sum02()时候发现运行类型B类中没有sum02(),然后向上查找到父类A中的sum02()方法,A中的sum02()方法返回i+10,这里的i就直接是A类中的属性i=10,所以sum02()返回值为10+10=20
4.实际案例分析
teacher和student都继承了preson类 公有属性name,age,公有方法say()
teacher有特有属性salary,特有方法teach()
student有特有属性score,特有方法study()