当前位置: 首页 > article >正文

面向对象三大特性:多态

什么是多态?

对于多态是一个极其抽象的词,比如说动物有猫和狗,猫和狗的行为不同,这也叫多态,就是根据引用对象的不同,产生的行为也不同,这就叫多态。

多态的实现条件

1.必须是继承的子类

2.子类得要对父类的方法进行重写

3.通过父类的引用调用重写的方法

此时func1方法的参数类型是父类,通过将不同的子类传入从而产生出不同的行为,这就叫多态。

重写

1.重写是通过子类对父类非static,final,private修饰的方法根据子类的需要对父类进行重新编写,同时其参数列表,返回类型都不能改变,

2.子类重写的访问修饰符权限不能比父类还低,比如子类是default父类是pubilc。

3.子类与父类必须是父子关系

4.可以叫上override进行修饰,如果重写的方法名错误其会提示。

重写与重载比较

1.重写要求两个类得是父子关系

2.重写的参数列表一定不能修改,重载则必须修改

3.重写的返回值类型不能修改(除非构成父子关系),重载则可以修改

4.重写的访问限定符收到严格限制,重载可以修改

向上转型和向下转型

向上转型使用场景

1.直接赋值

2.参数返回

3.方法传参

优点:让代码实现更灵活

缺点:不能调用子类特有的方法

多态的优缺点

优点

1.降低代码的圈复杂度,降低使用if-else

2.扩展性强

比如说我想在原有的Animal类上加一个子类,只需要创造一个新的实例就行,改动成本很低。

缺点

代码运行效率低

1.属性没有多态性
2.构造方法没有多态性


http://www.kler.cn/a/571220.html

相关文章:

  • Git安装部署
  • 力扣-动态规划-115 不同子序列
  • kubectl 运行脚本 kubernetes 部署springcloud微服务 yaml + Dockerfile+shell 脚本
  • 软件架构师日常工作和核心技能
  • 【Git原理与使用一】Git概念与基本操作
  • 人工智能 全部技术栈以及简单运用场景
  • GBT32960 协议编解码器的设计与实现
  • 概率论基础概念
  • leetcode 0018 四数之和-medium
  • 将 XML 文件转换为字典形式
  • AUTOSAR微控制器抽象层(MCAL)详解及综合实例
  • Docker安装Redpandata-console控制台
  • JavaWeb——MySQL-索引(3/3)-操作语法(索引操作语法概述、创建索引、查看索引、删除索引)
  • C++网络编程之Socket
  • 二分题目leetcode
  • 二百八十五、华为云PostgreSQL——建分区表并设置主键
  • 10.LED点阵实验
  • 安卓内存泄露之DMA-BUF异常增长:Android Studio镜像引起DMA内存泄露
  • Google chrome拦截某些下载内容
  • 基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码