要点

🎯 多态的核心条件

继承关系:存在父子类关系(如Dog/Cat extends Animal)
方法重写:子类必须重写父类方法
向上转型:父类引用指向子类对象(Animal a = new Dog()),但对象本质仍是子类实例

💡 多态的优势

扩展性强:新增动物类型(如Bird)无需修改调用代码
接口统一:所有动物通过makeSound()统一访问
降低耦合:调用者只需关注父类接口,不依赖具体子类

案例

Fu fu = new Zi(); 
fu.method();

子类没有重写方法:JVM 会调用父类的方法,但实际对象仍然是子类的实例。即使调用了父类的方法,this 仍然指向子类对象。方法内部如果访问了被子类重写的字段或调用被子类重写的方法,仍会遵循子类的实现。

总结

对象身份不变:无论调用父类还是子类的方法,对象的实际类型始终是 子类
方法调用:子类未重写时,执行父类方法逻辑,但方法内部的其他调用仍可能被子类影响(如调用被子类重写的方法)。
字段访问:直接访问字段时,取决于引用类型(父类),而非实际对象类型。(成员变量编译看左边,运行也看左边)


我爱吃炒煤
1 声望0 粉丝