温馨提示:这篇文章已超过454天没有更新,请注意相关的内容是否还可用!
摘要:本文将介绍Java面向对象编程中的三大特性之一——多态。多态是面向对象编程中的重要概念,它允许一个对象以不同的形态表现,具有多种形态的功能。本文将详细解释多态的概念、实现方式和作用,通过实例让读者深入了解多态在Java编程中的应用,以便更好地掌握面向对象编程技术。
作者介绍
大家好,我是橘橙黄又青,一个热衷于与大家共同进步的男人😉😉
个人主页
再无B~U~G-CSDN博客
多态
1 多态的概念
多态就是多种形态,就是去完成某个行为时,不同的对象去完成会产生不同的状态。
2 多态实现条件
在Java中要实现多态,必须满足以下条件:
1、必须在继承体系下。
2、子类必须对父类方法进行重写。
3、通过父类的引用调用重写的方法。
3 重写(override)
重写(override)也称为覆盖,重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程进行重新编写,返回值和形参都不能改变,重写的好处在于子类可以根据需要,定义特定于自己的行为。
方法重写的规则:
1、访问权限不能比父类中被重写的方法的访问权限更低。
2、子类在重写父类的方法时,方法名、参数列表必须相同。
3、被重写的方法的返回值类型可以是父类方法返回值类型的子类型。
4、父类被static、private修饰的方法、构造方法都不能被重写。
5、重写的方法可以使用@Override注解来显式指定。
4 向上转型和向下转型
4.1 向上转型
实际就是创建一个子类对象,将其当成父类对象来使用,语法格式:父类类型 对象名 = new 子类类型()。
4.2 向下转型
将一个子类对象经过向上转型之后当成父类方法使用,再无法调用子类特有的方法,但可能需要调用子类特有的方法时,将父类引用再还原为子类对象即可,但向下转型用的比较少,而且不安全,万一转换失败,运行时就会抛异常,Java中为了提高向下转型的安全性,引入了instanceof,如果该表达式为true,则可以安全转换。
多态的优缺点
假设有如下代码:
【使用多态的好处】
1、能够降低代码的 "圈复杂度",避免使用大量的if-else,如果现在需要打印的不是一个形状了,而是多个形状,如果使用多态,则不必写这么多的if-else分支语句,代码更简单。
2、可扩展能力更强,如果要新增一种新的形状,使用多态的方式代码改动成本也比较低。
【多态缺陷】
1、属性没有多态性,当父类和子类都有同名属性的时候,通过父类引用,只能引用父类自己的成员属性。
2、构造方法没有多态性。
3、避免在构造方法中调用重写的方法,因为在构造对象的同时,会调用父类的构造方法,如果在父类的构造方法中调用了重写的方法,此时会触发动态绑定,可能会调用到子类的该方法,而此时子类对象还没构造完成,可能会导致一些问题。
多态是面向对象编程的三大特性之一,它使得程序有更好的扩展性和复用性,但在使用多态时,也需要注意一些细节问题,如避免在构造方法中调用重写的方法等。
还没有评论,来说两句吧...