Java面向对象的三大特性之——多态

yumo6667个月前 (03-08)技术文章187

此目录衔接前面两篇

目录

  • 3. 多态
    • 3.1 含义
    • 3.2 实现
      • 3.2.1 操作名称的多态实例(方法重载)
      • 3.2.2 和继承有关的多态实例(方法重写)
    • 3.3 优点
    • 3.4 缺点

3.1 含义

一种多态是操作名称的多态,即多个操作具有相同的名字(方法重载),但这些操作所接收的消息类型(参数)必须不同。例如叫一个人(同一个对象)执行 “求面积” 操作时,多态可以向操作传递不同的消息,如求 “矩形面积” 或 “梯形面积”(矩形传递宽高,梯形传递上下底和高),以便让对象根据相应的消息来产生相应的行为。

另一种多态是和继承有关的多态,是指同一个操作被不同类型对象调用时可能产生不同的行为(子类重写父类中的方法)。例如,猫和狗都具有哺乳类的行为 “叫声”。但是,狗操作 “叫声” 产生的声音是 “汪汪…”,而猫操作“叫声”产生的声音是 “喵喵…”等。

————————————————

3.2 实现

3.2.1 操作名称的多态实例(也就是方法重载)

方法名相同 + 参数个数或者类型不同

3.2.2 和继承有关的多态实例(也就是方法重写)

继承 + 方法重写 + 父类的引用指向子类对象

3.3 优点

  • 可替换(可以替代一存在的代码)
  • 可扩充(增加的子类不会影响已存在的类的运行和操作)
  • 灵活性,能够提高使用效率;
  • 简化性(处理大量对象的运算和操作时,也很方便编写和修改)

3.4 缺点

  • 只能使用父类的引用,访问父类的成员

大家有更好的方法,可以私信我哈;大家一块进步~

相关文章

Java 7新特性深度解析:提升效率与功能

一、Switch中添加对String类型的支持Switch语句可以使用原始类型或枚举类型。Java引入了另一种类型,可以在switch语句中使用:字符串类型。public class switchAd...

你所不知道的Java8新特性:Lambda表达式和函数式接口

前言为什么要用Lambda表达式? Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,将代码像数据一样传递,这样可以写出更简洁、更灵活的代码,作为一个更紧凑的代码风格...