Java 的三大特性是 封装、继承、多态。
1、封装:通过 private 修饰属性,并提供 getter/setter 方法访问,隐藏内部实现细节,提高安全性和可维护性。
2、继承:子类可以继承父类的属性和方法,实现代码复用。Java 支持单继承,但可以通过接口实现多继承效果。
3、多态:同一个方法在不同对象上表现不同。包括编译时多态(方法重载)和运行时多态(方法重写)。运行时多态通过父类引用指向子类对象实现,增强了程序的扩展性和灵活性。
多态实现原理:
动态绑定(Dynamic Binding):
编译器只知道引用的声明类型,方法的具体调用延迟到运行时,由 JVM 根据对象的实际类型决定。
虚拟方法调用(Virtual Method Invocation):
Java 中非 private、非 static、非 final 的方法都是虚拟方法,运行时根据实际对象类型调用对应版本的方法。
实现流程:
创建父类引用指向子类对象。JVM 在运行时通过动态绑定确定对象的实际类型。根据实际类型,通过虚拟方法调用执行对应方法的实现。
总结一句话:
多态的实现依赖 动态绑定 + 虚拟方法调用,使得同一调用在不同对象上表现不同行为。