关于子类继承父类后调用方法的问题
1,看下面一段代码
class ParentClass { public String msg = "I am a attribute in ParentClass."; public String getMsg() { return msg; } } class ChildrenClass extends ParentClass { public String msg = "I am a attribute in ChildrenClass."; } public class TestClass { public static void main(String[] args) { ParentClass p = new ParentClass(); ChildrenClass c = new ChildrenClass(); System.out.println(p.getMsg()); System.out.println(""); System.out.println(c.getMsg());//没有重写,还是调用父类中的方法。 } }
输出结果是:
I am a attribute in ParentClass.
I am a attribute in ParentClass.
在子类没有重写父类中的方法时,调用的是父类中的方法,在调用方法时,总是先去找有没有子类扩展的方法,如果没有就去父类中找,这里子类并没有扩展父类的方法。
2,动态绑定
当创建子类的对象的时候(new 子类()) 在左边给的是父类的引用,即 父类 引用名 = new 子类()
系统动态绑定了引用的实际类型。