多态中的隐藏与重写
隐藏
我们都知道, 方法是可以被重写的, 其实在发生重写之前, 子父类中成员的关系是隐藏.
隐藏, 父类和子类拥有相同名字的属性或者方法时, 父类的同名的属性或者方法在形式上就"看不见了", 但实际是还是存在的.
不同的是, 方法可以被重写, 而属性不能.
隐藏是静态的, 它不会动态绑定
属性只能被隐藏, 不能被重写
隐藏和重写的区别
简单的来说, 多态是针对方法的, 属性是没有多态的, 子类引用转成父类型后, 访问的就是父类的属性.
被隐藏的属性, 在子类被强制转换成父类后, 访问的是父类中的属性 (隐藏)
被重写的方法, 在子类被强制转换成父类后, 调用的还是子类自身的方法 (多态)
Last updated