共以下 9 个回答

  • 八点上线 永久会员 2024年12月13日 上午3:13

    多态就是父类引用的可以在运行时指向不同的子类对象,从而调用不同的重写方法

    0 赞同 0 条回复
  • Silence 永久会员 2023年10月25日 上午10:59

    首先来解释一下这个多态,多肽的意思呢就是说面对同一个消息的时候,不同的对象它有不同的反应。就比如说上课铃响了以后,老师他的反应是站在讲台上讲课。而学生他的反应是坐在座位上听讲。这就是多态。

    然后JAVA它作为一门面向对象的语言。它具有封装继承多态的特性。在JAVA中多态的体现就是子类和父类。通常的使用场景就是用父类的引用指向子类的对象。这样我们在同一个场景调用的时候,就可以根据子类的实际运行类型执行不同的代码逻辑,从而得到不同的响应结果。这就是JAVA中的多态。

    之所以要有多态,我认为他的核心思想在于解耦。有了多态以后,我们不必再去判断他的子类具体是哪一个类型,只需要知道他有哪一个方法。我们在对应的场景下调用他的这个方法就可以了。剩下的就交给子类自己去决定需要做什么响应。就能够减少大量的不必要的类型判断的代码。同时也极大的增强了代码的可扩展性。

    0 赞同 0 条回复
  • LilyBoy 永久会员 2023年9月7日 上午10:44

    多态就是一个对象具有多种状态,表现为父类的应用指向子类的实例。子类可以拥有多种行为,例如在实现导出接口时,可以导出不同的格式文件excel、txt等。或者是一个动物类下,可以有不同的猫、狗,实现不同的方法行为。

    0 赞同 0 条回复
  • 小肸 永久会员 2023年8月1日 下午4:03

    多态就是就是调用方法名一样的方法但会有不同的体现。从JVM的角度来说,可以分为编译时多态和运行时多态。编译时多态通过重载实现,参数列表不同的前提下返回类型不同或者相同就是重载。比如后端返回响应数据时有时候只返回状态码,有时候返回状态码和提示信息,有时候返回状态码,提升信息和数据,这个时候就可以用到重载。而运行时多态通过子类重写父类的方法来实现,设计模式中的策略模式就是多态的一种体现,我认为策略模式都可以叫做运行时多态模式。定义一个接口或者抽象类作为抽象策略类,然后创建不同的具体策略类实现各自具体的策略,然后根据环境或者条件决定采用调用哪一个具体策略类的行为。还有AQS同步框架中就采用策略模式,可以有策略模式存在,就有运行时多态的体现。

    0 赞同 0 条回复
  • 中国用户 永久会员 2023年6月26日 下午8:23

    多态是建立在继承和封装基础上的,同一个行为有不同的表现形式,分为编译时多态,即方法重载;运行时多态,方法重写。要实现多态需要做两件事:一是子类继承父类并重写父类中的方法,二是用父类型引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为。

    0 赞同 0 条回复
  • 。 永久会员 2023年6月19日 下午5:11

    多态指一种事物多种状态,通过继承,实现接口,重写方法来实现,比如List有ArrayList,LinkedList,Map有HashMap,ConcurrentHashMap,对于一些自定义的类可以重写toString方法和HashCode,通过对不同需求使用同一的类或接口实现,有很好的拓展性和维护性

    0 赞同 0 条回复
  • Gary 永久会员 2023年6月2日 下午4:06

    多态是指同一个行为,可以有不同的表现形式。它的体现方式可以有继承类然后重写父类的方法、实现接口然后重写接口的方法、同一个类里面对方法的重载。多态可以提高代码的复用性,也可以实现动态绑定。例如:动物类,所有的动物都有个吃东西的方法,然后动物类可以分为猫、狗、鱼,可以用继承的方法,如果有更多种类的动物,直接加多几个类就可以了,而不用在动物类的基础上作修改,可以提高代码的可扩展性。

    0 赞同 0 条回复
  • 秊 永久会员 2023年5月30日 下午11:11

    多态可以理解为 “事物运行时的不同状态”,在 Java 中具体指,通过动态绑定,在运行时根据对象的实际类型来调用对应的方法。多态可以通过继承或者接口来实现。拿继承来说,子类必须重写父类的方法,通过向上转型,使用父类类型来调用子类对象的方法,结果是在运行时执行子类中重写的方法。

    实践中我的项目的支付模块就用到了多态。具体来说,有一个基类 “支付方式 Payment”,它有一个 pay 方法,之后分别创建 “微信支付 WeChatPay” 和 “支付宝支付 AliPay” 两个类,并且都继承自 Payment 并重写 pay 方法。那么在之后的支付代码中,无论用户选择的哪种支付方式,都可以统一用 Payment 来进行具体的 pay 操作。原因是 Java 的动态绑定会确保这个方法在真正执行时,去调用子类中微信或者支付宝的 pay 方法。另外,在修改具体的支付逻辑时,也只需单独去微信或者支付宝的类里面去修改,而不用动主逻辑里面的代码,体现出多态的灵活和可扩展性。

    除了以上说的运行时多态,我还听说过一个有争议的编译时多态,它具体指 Java 中的方法重载,在编译期就根据已知的参数列表,决定了需要调用的方法。不过一般说多态都默认说的是运行时多态。

    3 赞同 1 条回复
  • mpweixin用户 永久会员 2023年5月30日 下午4:46

    Java 实现多态有三个必要条件:继承、重写和向上转型。也是编译类型看的是左边,运行类型其实是右边,在接口的实现类也可以用,也可以当参数传给形参,在使用多态时,子类方法完成了对父类方法的重写后,父类去调用子类的方法而不去调用父类的方法。但是编译还是父类,实际执行是子类的方法,好处是可以方便使用,不用每次都去创建。还能可以提高程序的扩展性。 (前父后子),父类型的引用指向子类型的对象 多态除还可以解耦。

    0 赞同 0 条回复

# 回答此问题

后才能回答