JAVA中的多态特性

在Java中,以下内容符合多态的特性:

方法重载

- 多个方法可以具有相同的名称,但参数列表不同(参数个数、类型或顺序不同)。在调用时,会根据传入的实际参数来决定调用哪个具体的方法。

方法重写

- 子类重写父类的方法,即子类中定义了与父类中方法签名(方法名、参数列表、返回类型)完全相同的方法。在运行时,根据对象的实际类型来决定调用哪个类的重写方法。

对象的多态性

- 父类的引用可以指向子类的对象,通过这个父类引用调用方法时,会调用子类中重写后的方法。例如: Parent p = new Child(); ,其中 Parent 是父类, Child 是子类,当调用 p 的方法时,如果 Child 类重写了该方法,就会执行 Child 类中的方法。

接口的多态性

- 一个接口可以有多个实现类,不同的实现类可以实现接口中定义的方法以不同的方式。通过接口的引用可以指向不同的实现类对象,在调用接口方法时,会根据实际指向的对象类型来执行相应实现类中的方法。

    动态绑定机制

在Java中,多态的实现依赖于动态绑定机制。在程序运行时,JVM会根据对象的实际类型来决定调用哪个类的方法。具体过程如下:当通过父类引用或接口引用调用方法时,JVM首先在对象的实际类型中查找是否有重写的方法,如果有,则调用该重写方法;如果没有,则沿着继承链向上查找,直到找到该方法的实现。

注意事项

- 方法重写规则:子类重写父类方法或实现接口方法时,方法签名必须与被重写方法一致,返回值类型可以是被重写方法返回值类型的子类,访问修饰符不能比父类中被重写方法的访问修饰符更严格。

- 对象转型问题:将子类对象赋值给父类引用后,若要将父类引用强制转换回子类类型,需确保引用实际指向子类对象,否则会抛出 ClassCastException 异常。

- 静态方法与多态无关:静态方法不能被重写,通过父类引用调用静态方法时,执行的是父类的静态方法,不体现多态性。

- 私有方法不参与多态:私有方法不能被重写,子类无法访问父类私有方法,不参与多态传递。

- 构造方法无多态性:构造方法不能被继承和重写,创建对象时根据实际创建的对象类型调用相应类的构造方法,与引用类型无关。

   不管是对象还是接口,若遇到特殊方法时,都要将其转换成子类类型再访问方法

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值