说一说你对多态的理解
多态是指子类对象可以直接赋给父类变量(父类引用指向子类对象),但运行时依然表现出子类的行为特征,(同一类型的对象在执行同一个方法时,能表现出多种行为特征)
- 当把一个子类对象直接赋给父类引用变量时,例如
BaseClass obj = new SubClass;,
- 这个obj引用变量的编译时类型是BaseClass,而运行时类型是SubClass,
- 当运行时调用该引用变量的方法时,其方法行为总是表现出子类方法的行为特征,这就会出现:相同类型的变量,调用同一个方法时呈现出多种不同的行为特征,这就是多态。
- 多态有两种形式:编译时多态(静态多态)和运行时多态(动态多态)。
- 编译时多态:静态多态
- 编译阶段,编译器能够确定调用哪个方法,这是通过方法的重载来实现的。
- 编译时多态依赖于方法的签名(方法名和参数列表),根据调用时提供的参数类型和数量来确定具体调用的方法。
- 运行时多态
- 在程序运行时,根据实际对象的类型来确定调用的方法,这是通过方法的重写来实现的。运行时多态依赖于对象的实际类型,而不是引用类型。

浙公网安备 33010602011771号