语法:父类类型 变量名=new 子类类型();
特点:编译类型看左边,运行类型看右边
可以调用父类的所有成员,但是private的字段和方法等等都无法调用(要遵守访问权限)
不能调用 new 子类类型() 的子类类型特有的方法(父类没有,子类有)
最终虽然调用的是父类的方法,但是运行效果看子类重写后的具体实现!
就是先去子类看看有没有此方法,如果没有的话,才去父类看。
动态绑定机制
方法有动态绑定机制,属性或者字段没有动态绑定机制
当调用对象方法的时候,方法会和该运行类型绑定,简单来说就是每次调用方法,都会去看运行类型里面有没有这个方法,没有的话才会去看父类的。
当调用对象属性的时候,属性不会和运行类型绑定,简单来说就是每次调用属性,不会去看运行类型有没有这个属性,只要在哪里声明这个属性,就在哪里调用。