java中的多态是指什么

发布时间:2020-06-28 09:59:19

来源:亿速云

阅读:119

作者:Leah

java中的多态是指什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:

多态性是对象多种表现形式的体现。现实中,比如我们按下 F1 键这个动作:

·如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;

·如果当前在 Word 下弹出的就是 Word 帮助;

·在 Windows 下弹出的就是 Windows 帮助和支持。

同一个事件发生在不同的对象上会产生不同的结果。

多态的优点

·1. 消除类型之间的耦合关系

·2. 可替换性

·3. 可扩充性

·4. 接口性

·5. 灵活性

·6. 简化性

多态存在的三个必要条件

·继承

·重写

·父类引用指向子类对象

比如:Parent p = new Child();

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

以下是一个多态实例的演示,详细说明请看注释:

Test.java 文件代码:public class Test {

public static void main(String[] args) {

show(new Cat()); // 以 Cat 对象调用 show 方法

show(new Dog()); // 以 Dog 对象调用 show 方法

Animal a = new Cat(); // 向上转型

a.eat(); // 调用的是 Cat 的 eat

Cat c = (Cat)a; // 向下转型

c.work(); // 调用的是 Cat 的 work

}

public static void show(Animal a) {

a.eat();

// 类型判断

if (a instanceof Cat) { // 猫做的事情

Cat c = (Cat)a;

c.work();

} else if (a instanceof Dog) { // 狗做的事情

Dog c = (Dog)a;

c.work();

}

}

}

abstract class Animal {

abstract void eat();

}

class Cat extends Animal {

public void eat() {

System.out.println("吃鱼");

}

public void work() {

System.out.println("抓老鼠");

}

}

class Dog extends Animal {

public void eat() {

System.out.println("吃骨头");

}

public void work() {

System.out.println("看家");

}

}

执行以上程序,输出结果为:吃鱼

抓老鼠

吃骨头

看家

吃鱼

抓老鼠

关于java中的多态是指什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

java中多态到底是什么_java中的多态是指什么相关推荐

  1. java中反射到底是什么_JAVA中反射是什么

    烧仙草VB JAVA中的反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变.通俗的讲就是反射可以在运行时根据指定的类名获得类的信息.首先我们先明确两个概念,静态编译和动态编译. ...

  2. java同一个包是什么意思_java中包到底是什么意思?包访问权限又是什么意思,有C++基础。...

    展开全部 是否是说62616964757a686964616fe4b893e5b19e31333335303535 first.java中有A B C 三个类,second.java中有D E F 三 ...

  3. java方法重载和重载方法_Java中的重载与重载

    java方法重载和重载方法 Overriding Vs Overloading In Java 在Java中覆盖vs重载 Overriding and Overloading are the core ...

  4. java的tey语句return了_Java中try、finally语句中有return时的执行情况

    在Java中当try.finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说会执行,有的说不会执行,到底哪种说法正确,现在通过下面的例子 ...

  5. java的对象是什么意思_Java中对象和对象引用的区别,引用、指向是什么意思

    Java的变量分为两大类:基本数据类型和引用数据类型. 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量 ...

  6. java中的case1怎么说_Java 中的 CAS 简述及原理解析

    一.CAS 是什么? CAS(Compare And Swap),比较并交换,它是一条CPU并发原语.它的功能是判断内存某个位置的值是否为预期值,如果是则更新为新的值,这个过程是原子的.1 publi ...

  7. java 内存溢出和内存泄漏_JAVA中的内存溢出和内存泄漏有很大的区别

    JAVA中的内存溢出和内存泄漏分别是什么,有什么联系和区别,我谈谈自己的理解. 内存泄漏(memory leak ):申请了内存不释放,比如100m的内存,分配了10m的内存一直不回收,那么可以用的内 ...

  8. java中的方法在哪里_Java中的本机方法是什么,应在哪里使用?

    小编典典 Java中的本机方法是什么,应在哪里使用? 一旦看到一个小例子,就很清楚了: Main.java : public class Main { public native int intMet ...

  9. java中为什么要用注解_java中的注解,真的很重要,你理解了嘛?

    这篇文章开始讲解java中的注解,在平时的开发当中我相信你或多或少的接触过注解.比如你可能都见过@override,它代表的就是一个注解.但是,为了更加清晰的去介绍注解,我还是先给出一个例子,让你能够 ...

最新文章

  1. Matlab中plot函数及legend函数详解
  2. java获取jsp对象的属性_java-从jsp el中的对象获取布尔属性
  3. pt-online-schema-change 修改主键导致数据删除失败的问题调查
  4. Linux——好用的一些命令(一)(保持更新)
  5. 大数据学习笔记25:MR案例——自定义输入输出格式处理个人成绩
  6. Abp 代码生成器使用说明
  7. 在发布ASP.NET网站的时候,出现state server错误
  8. yolov4 火焰检测 火焰识别 代码 数据集 开源
  9. CactiEZ V10.1 中文版 Cacti中文 安装教程cactiezv10.iso
  10. 传染病模型-java代码
  11. Cain嗅探工具的基本使用
  12. csgo fps不稳定和服务器,CSGO fps不稳定,求FPS 优化设置
  13. bandzip和360解压_360压缩和bandizip哪个好 360压缩和bandizip软件功能对比详情
  14. 俞敏洪:人生最重要的两件事是什么?
  15. 记录——kubeadm集群node节点加入
  16. 2021年3月12日 星期五 植树节 霾
  17. 基于python数据分析(分析篇七:预测/误差)
  18. 微信小程序获取手机验证码
  19. python爬虫===表情包爬取
  20. Android平台GB28181设备接入端如何支持跨网段语音对讲

热门文章

  1. html空开距离,家用空开一半多大
  2. 财资界风向标:2018 国际财资管理实践奖TMI中国站圆满落幕
  3. 域服务器适合什么系统,什么是域?什么是域服务器?
  4. matlab微积分计算
  5. 2021Java春招,java开发报表工具
  6. 32位算术逻辑运算单元alu设计_64位的电脑比32位的电脑跑的快么?多图预警
  7. Clone succeeded, but checkout failed. drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c
  8. vs2017+libsodium
  9. hosts文件位置?hosts文件是什么?hosts文件修复方法的详细介绍
  10. 第5天!争气!蒸汽!