多态的概念及运用

news/2024/9/22 10:55:28/

多态

概念:多态是指同一种行为具有多个不同的表现形式或形态的能力。在Java中,多态是指一个对象的实际类型可以是其父类或接口类型,但在运行时会根据其实际类型来调用相应的方法。是面向对象的第三大特征,建立于封装和继承之上。

【多】:表示多种

【态】:表示状态

多态的实现方式

方法的重载体现多态

java">class B{public void say(){System.out.println("B(父类)类的say()方法被调用");}
}
class A extends B{public int sum(int n1,int n2){return n1 + n2;}public int sum(int n1,int n2,int n3){return n1 + n2 + n3;}public void say(){System.out.println("A(子类)的say()方法被调用");}
}
public class Test01{public static void main(String[] args){//方法重载体现多态A a = new A();//传入不同的参数就会调用不同的sum方法,体现多态System.out.println(a.sum(10,20));System.out.println(a.sum(10,20,30));}
}

方法的重写体现多态

java">class B{public void say(){System.out.println("B(父类)类的say()方法被调用");}
}
class A extends B{public int sum(int n1,int n2){return n1 + n2;}public int sum(int n1,int n2,int n3){return n1 + n2 + n3;}public void say(){System.out.println("A(子类)的say()方法被调用");}
}
public class Test01{public static void main(String[] args){//方法重写体现多态A a = new A();B b = new B();//对象不同,调用的方法不同a.say();b.say();}
}

对象的多态(核心)

java">class Animal{public void shout(){System.out.println("Animal大声叫");}
}class Cat extends Animal{@Overridepublic void shout(){System.out.println("小猫喵喵喵~~~");}
}class Dog extends Animal{@Overridepublic void shout(){System.out.println("小狗汪汪汪~~~");}
}public class Test02{public static void main(String[] args){//对象多态Animal animal = new Dog();//运行时,animal的运行类型为Dog,因此调用的是Dog的shout方法animal.shout();//输出--小狗汪汪汪~~~animal = new Cat();animal.shout();//输出--小猫喵喵喵~~~  }
}

接口的多态

java">interface IUSB {public void use();
}class Mouse implements IUSB{@Overridepublic void use() {System.out.println("鼠标:点击");}
}class KeyBoard implements IUSB{@Overridepublic void use() {System.out.println("键盘:输入数据");}
}class Disk implements IUSB{@Overridepublic void use() {System.out.println("硬盘:文件上传下载");}
}class Computer {public void connection(IUSB usb){usb.use();}
}public class Test01 {public static void main(String[] args) {Computer computer = new Computer();//接口的多态:实现类的对象指向接口的引用//接口的引用中存储的是实现类对象在堆中的地址IUSB usb = new KeyBoard();computer.connection(usb);	}
}

注意:

  • 一个对象的编译类型和运行类型可以不一致
  • 编译类型在定义对象时就确定了,不能改变
  • 运行类型是可以变化的
  • 编译类型看=左边,运行类型看=右边

多态优缺点

优点:

  • 消除类型之间的耦合。
  • 可以使用基类类型的指针或引用指向任何子类类型的对象。
  • 可以使用基类的引用或指针调用重写的方法。
  • 可以方便地更改子类,添加新的子类。

缺点:

  • 不能使用基类的引用或指针直接访问子类的特有成员或方法。
  • 不能在编译时确定对象的类型,因此不能访问子类的特有方法。

http://www.ppmy.cn/news/1458817.html

相关文章

网页主题自动适配:网页跟随系统自动切换主题

主题切换是网站设计中一个非常有趣的功能,它允许用户在多种预先设计的样式之间轻松切换,以改变网站的视觉表现。最常见的就是白天和黑夜主题的切换,用户可以根据自己的喜好进行设置。 除了让用户手动去切换主题外,如果能够让用户第…

书生浦语训练营第2期-第7节笔记

一、为什么要研究大模型的评测? 首先,研究评测对于我们全面了解大型语言模型的优势和限制至关重要。尽管许多研究表明大型语言模型在多个通用任务上已经达到或超越了人类水平,但仍然存在质疑,即这些模型的能力是否只是对训练数据的…

8款好用的电脑监控软件分享

在这个数码时代,电脑如同我们的得力助手,陪伴我们走过工作、学习和娱乐的每一个瞬间。然而,随着电脑使用频率的增加,电脑监控的需求也悄然崛起。别担心,市场上已经涌现出一大批出色的电脑监控软件,它们就像…

阿里云宣布:全面赶超GPT-4

5月9日,阿里云正式发布通义千问2.5,阿里云表示,该模型性能全面赶超GPT-4 Turbo。#阿里云宣布全面赶超GPT4# 据介绍,相比通义千问2.1版本,通义千问2.5的理解能力、逻辑推理、指令遵循、代码能力分别提升9%、16%、19%、…

【Git】Git学习-15:分支简介和基本操作

学习视频链接:【GeekHour】一小时Git教程_哔哩哔哩_bilibili​编辑https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780 git bran…

VMR,一款支持40多种编程语言和工具的跨平台SDK版本管理器。

支持40编程语言和工具。支持对每个项目锁定SDK版本。支持MacOS/Windows/Linux。无需插件,开箱即用。更快,更简单。 VMR是一款简单,跨平台,且经过良好测试的版本管理器,用于管理多种SDK以及其他工具。它完全是为了通用…

jQuery-1.语法、选择器、节点操作

jQuery jQueryJavaScriptQuery&#xff0c;是一个JavaScript函数库&#xff0c;为编写JavaScript提供了更高效便捷的接口。 jQuery安装 去官网下载jQuery&#xff0c;1.x版本练习就够用 jQuery引用 <script src"lib/jquery-1.11.2.min.js"></script>…

Android RecyclerView

RecyclerView核心实现官方文档 Once you determine your layout, you need to implement your Adapter and ViewHolder. These two classes work together to define how your data is displayed. The ViewHolder is a wrapper around a View that contains the layout for an…