精华内容
下载资源
问答
  • 2021-02-26 08:45:48

    下面要给大家分享的是一个多态经典案例,一起来看看这个java多态简单例子吧。/*多态的好处:提高了代码的维护性和扩展性;

    弊端:父类不能使用子类的特有功能。

    要用子类的特有功能,可以:

    A:创建子类对象,调用方法即可(不合理,太占内存);

    B:把父类的引用强制转换为子类的引用(向下转型);

    向上转型:Fu f = new Zi();

    向下转型:Zi z = (Zi) f;//要求该f必须是转换为Zi的。

    */

    class Animal

    {

    public void eat()

    {

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

    }

    }

    class Dog extends Animal

    {

    public void eat()

    {

    System.out.println("狗吃肉");

    }

    public void lookDoor()

    {

    System.out.println("狗看门");

    }

    }

    class Cat extends Animal

    {

    public void eat()

    {

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

    }

    public void playGame()

    {

    System.out.println("捉迷藏");

    }

    }

    public class DuoTaiTest

    {

    public static void main(String[] args)

    {

    //定义为狗

    Animal a = new Dog();

    a.eat();

    System.out.println("------------");

    //还原成狗

    Dog d = (Dog) a;

    d.eat();

    d.lookDoor();

    System.out.println("-------------");

    //变成猫

    a = new Cat();

    a.eat();

    System.out.println("-------------");

    //还原成猫

    Cat c = (Cat) a;

    c.eat();

    c.playGame();

    }

    }

    运行的结果

    0480f6e2f70bc8a191636dc133e37b50.png

    上面这个简单的java多态举例,你都仔细的看了吗?你还想了解更多的java经典实例吗?请继续关注奇Q工具网的java实例栏目来了解吧。

    推荐阅读:

    更多相关内容
  • 【Java面试题】谈谈对Java多态的理解
  • java多态练习题

    2018-04-21 17:52:18
    java多态、继承练习题,包含题目与答案,............................................................................................................
  • JAVA多态图文详解ppt

    2018-03-20 16:46:02
    JAVA多态图文详解ppt,详细通过各种举例介绍JAVA多态的ppt
  • 这边文章的编程代码:https://blog.csdn.net/qq_41086359/article/details/103650238 Java多态,面向对象编程题
  • Java多态

    千次阅读 2022-05-04 19:35:50
    多态(polymorphism) Poly(许多)+morphism(形态) 面向对象的三大特征:封装性,继承性,多态性 一.多态的概念 1.概念引入 旺财是一个狗,但同时也是一个动物。 旺财是一个对象,这个对象既有狗形态,也有动物...

    多态(polymorphism)
    Poly(许多)+morphism(形态)
    面向对象的三大特征:封装性,继承性,多态性
    一.多态的概念
    1.概念引入

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_20,color_FFFFFF,t_70,g_se,x_16

    旺财是一个狗,但同时也是一个动物。
    旺财是一个对象,这个对象既有狗形态,也有动物形态。
    2.定义:一个对象拥有多种形态,这就是对象的多态性。


    二.多态的格式与使用
    代码当中体现多态性:父类引用指向子类对象
    格式:
    父类名称 对象名 = new 子类名称( );
    接口名称 对象名 = new 实现类名称( );

      watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_20,color_FFFFFF,t_70,g_se,x_16                              

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_15,color_FFFFFF,t_70,g_se,x_16

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_15,color_FFFFFF,t_70,g_se,x_16

    三.多态中成员变量的使用
    访问成员变量的两种方式:
    1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_19,color_FFFFFF,t_70,g_se,x_16

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_9,color_FFFFFF,t_70,g_se,x_16

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_11,color_FFFFFF,t_70,g_se,x_16

    2.间接通过成员方法访问:看该方法属于谁
    (1)子类没有覆盖重写

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_19,color_FFFFFF,t_70,g_se,x_16

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_12,color_FFFFFF,t_70,g_se,x_16

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_11,color_FFFFFF,t_70,g_se,x_16

    (2)子类覆盖重写

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_16,color_FFFFFF,t_70,g_se,x_16

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_12,color_FFFFFF,t_70,g_se,x_16

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_12,color_FFFFFF,t_70,g_se,x_16

     四.多态中成员方法的使用规则
    看new的是谁,就优先用谁,没有则向上找。

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_17,color_FFFFFF,t_70,g_se,x_16

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_14,color_FFFFFF,t_70,g_se,x_16

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_15,color_FFFFFF,t_70,g_se,x_16

    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiN5oOz5omT5Luj56CB5ZWm,size_20,color_FFFFFF,t_70,g_se,x_16

    总结口诀:
    成员方法:编译看左边,运行看右边
    成员变量:编译看左边,运行看左边


    五.使用多态的好处
    多态可以使程序具有良好的扩展性和可维护性,并可以对所有类对象进行通用的处理。

    展开全文
  • Java多态的笔试题 Tychus:一种表征细菌基因组的工具。 目录 概述 Tychus 是一种工具,允许研究人员执行大规模并行序列数据分析,目标是对细菌基因组进行高可信度和全面的描述。 Tychus 管道的主要功能包括使用开源...
  • C++和Java多态的区别

    2016-11-27 10:44:58
    C++和Java多态的区别
  • Java多态的内存机制

    2020-12-22 17:22:43
     1:java面向对象特征:抽象,封装,继承,多态。  抽象:  封装:  继承:  多态:  写一个类,来完成以上所包含的抽象,封装,继承内容   class LaoYin extends Thread implements ...
  • 下面小编就为大家带来一篇Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了Java多态中动态绑定原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 大家可能都知道Java面向对象的三大特性,封装,继承,多态,其中动态绑定就与多态有关,那什么是动态绑定呢? 1.动态绑定(auto binding):也叫后期绑定,在运行时,虚拟机根据具体对象的类型进行绑定,或者说是...
  • Java 多态

    2021-03-09 09:03:24
    一、多态定义多态就是指对象的多种形态。一个是引用的多态;一个是方法的多态。1、引用多态当我们在写面向对象程序的时候,一般父类的引用可以指向本类的对象。Animal a = new Animal(); //a是父类的引用指向的是本...

    一、多态定义

    多态就是指对象的多种形态。一个是引用的多态;一个是方法的多态。

    1、引用多态

    当我们在写面向对象程序的时候,一般父类的引用可以指向本类的对象。

    Animal a = new Animal(); //a是父类的引用指向的是本类的对象

    Animal b = new Dog(); //b是父类的引用指向的是子类的对象

    //注意:我们不能使用一个子类的引用去指向父类的对象

    2、方法多态

    一般情况下,我们都是用本类的对象,调用本类的方法。在多态中,创建子类对象时,调用的方法为子类重写的方法或继承的方法。

    Animal a = new Animal(); //a是父类的引用指向的是本类的对象

    Animal b = new Dog(); //b是父类的引用指向的是子类的对象

    //这边是引用的多态

    a.bark(); //调用的是父类Animal的方法

    b.bark(); //调用的是子类Dog重写的方法

    //这便是方法的多态

    注意:

    父类分引用指向子类对象时不可以调用子类独有的方法,只能调用继承或重写的方法

    引用多态不能使用一个子类的引用去指向父类的对象

    抽象类在定义类时,前面会加abstract关键字。那我们什么时候会用到抽象类呢?

    在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。也就是说抽象类是约束子类必须要实现哪些方法,而并不关注方法如何去实现。

    抽象类在定义类时,前面会加abstract关键字。那我们什么时候会用到抽象类呢?

    在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。也就是说抽象类是约束子类必须要实现哪些方法,而并不关注方法如何去实现。

    二、多态引用类型转换

    Dog a = new Dog();

    Animal b = a; //自动类型提升 向上类型转换(无风险)

    /*

    Dog c = b;

    //将父类引用转换成子类引用,编译器不允许这样做

    */

    Dog c = (Dog)b; //在父类前加上小括号,里面加上子类类型,实现强制转换

    //向下类型转换

    /*

    Cat d = (Cat)b;

    //虽然编译器不会报错,但运行会出问题,因为b是指向Dog类的,它们是不同类型的对象,这里就存在风险

    /*

    三、 抽象类

    从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

    抽象类是限制规定子类必须实现某些方法,但不关注实现细节。

    那抽象类如何用代码实现呢,它的规则如下:

    用 abstract 修饰符定义抽象类

    用 abstract 修饰符定义抽象方法,只用声明,不需要实现

    包含抽象方法的类就是抽象类

    抽象类中可以包含普通的方法,也可以没有抽象方法

    抽象类的对象不能直接创建,我们通常是定义引用变量指向子类对象。

    aee20a3271bb36a098da4173511a1589-wm

    091cd2b9e4f2cce16b6da2c215728ed7-wm

    展开全文
  • Java多态的讲解

    2017-07-01 20:10:36
    Java多态的讲解
  • java多态理解

    2018-12-17 14:10:05
    java 个人对于多态理解和一些笔记。
  • java 多态

    2020-05-19 13:43:02
    java 多态
  • 主要介绍了JAVA 多态操作----父类与子类转换问题,结合实例形式分析了JAVA 多态操作中父类与子类转换问题相关原理、操作技巧与注意事项,需要的朋友可以参考下
  • 本篇文章给大家带来的内容是什么是java多态?java多态的使用,通过游戏中的一些功能带你掌握多态的使用。下面由动力节点java学院小编为大家一一介绍什么是java多态java多态的使用。希望对大家有帮助。为什么要使用...

    本篇文章给大家带来的内容是什么是java多态

    ?java多态的使用,通过游戏中的一些功能带你掌握多态的使用。下面由动力节点java学院小编为大家一一介绍什么是java多态及java多态的使用。希望对大家有帮助。

    为什么要使用多态

    在一款对战类游戏中(如有雷同纯属巧合),有两个不同的法师英雄:小乔、妲己。

    两个法师英雄的都有攻击的方法,小乔的攻击伤害为10,消耗魔法20。妲己的攻击伤害为15,消耗魔法30。玩家可以操作两个英雄进行攻击,下面看看实现的代码。

    父类-英雄:whyusepolymorphic.Hero.java

    9cae221dcfaf57d0dd90337801cca945.png

    子类-小乔:whyusepolymorphic.LittleJoe.java

    b877aacf29d1723c73a2bfe8288a56d1.png

    子类-妲己:whyusepolymorphic.Daji.java

    33a6426838583957e93eb41ac28970b6.png

    玩家:whyusepolymorphic.Player.java

    361a6136fc2dd9c18932b6fbc89f1ea2.png

    上面代码完整的实现了要求中的功能,那我们知道英雄不可能就这几个,后期如果添加新的魔法英雄,伤害不一样,怎么办?

    我们可以添加新的类,实现攻击的方法,修改玩家类添加操作英雄的方法。这个方式可以完成 Hero 扩展的需求,但是后面有更多的 Hero

    添加进来,我们维护起来就不是那么方便了。

    研究上面的代码我们发现,Player 类中的 play 方法的参数都是 Hero 类的子类,能否使用一个 play(Hero hero)

    方法操作所有的英雄?使用多态就能够实现这种优化设计。

    什么是多态

    简明扼要,多态就是多种形态。在自然界中碳的多态就有石墨、钻石等,剪这个动作就有剪纸、剪头发等。同一个操作,由于条件的不同,产生的结果也不同。

    那么在程序中的多态,就是指同一个引用类型,使用不同的实例而执行不同的操作(父类引用指定子类对象 Hero h=new Daji();)。

    如何实现多态

    实现多态的步骤:

    1.编写具有继承关系的父类和子类

    2.子类重写父类方法

    3.使用父类的引用指向子类的对象

    父类作为方法形参实现多态

    使用多态优化上面代码

    修改 Hero.java 添加攻击的方法

    0bc19169b4aea282781f7a5b5df27af5.png

    两个子类不用修改

    修改玩家类 Player.java 将 play方法的参数设为父类

    f63ed949e546f0aec7843534e50dc5bf.png

    修改测试类

    2cce9e686c96e87904d06c4634386ceb.png

    父类作为返回值实现多态

    玩家购买英雄使用多态实现,购买的方法有返回值,返回购买后的英雄,父类作为返回值实现这个功能。

    修改玩家类 Player.java 添加获取英雄的方法

    1d24666e10c0c850325ba83bb55e6bdc.png

    测试类

    437c42b4345c1b614b51910d0ed16b72.png

    父类到子类的转换

    如果子类中有一些子类特有的方法,父类引用不能调用子类的特有的方法。

    向 Daji.java 中添加一个方法 queenWorship

    64239c10ceea6b3367aee30a2e6a83ba.png

    向 LittleJoe.java 中添加一个方法 dazzlingStar

    7d6ab287c11e7626faf902918e48b01d.png

    在 Player.java 中添加 bigMove 方法

    23edcd5e850fa9e93ca9f7361cebbddc.png

    发现代码 hero.dazzlingStar(); 报错

    那么这个时候就需要将父类转换为子类(强制类型转换)

    c7f5345fd757e519bf16eb29d36cb38e.png

    但是直接这样写也会报错,用 instanceof 运算符可以保证不会转换错误

    语法:

    1c1b8f70026cdd366ff0986cf90cbea7.png

    instanceof通常和强制类型转换结合使用

    修改 Player.java 中的 bigMove 方法

    5a60a235eb23c9458b0823a22d51e7d0.png

    在 main 方法中编写测试代码

    c251f6ca902ab468e6c76492393d8d2c.png

    以上就是什么是java多态?java多态的使用的详细内容,希望能对大家的学习有所帮助。更多相关内容请关注动力节点java学院官网,每天会有精彩内容等你来看。

    以上内容相关免费视频教程下载:

    展开全文
  • Java多态 和 Python多态

    2022-03-18 23:34:59
    Java多态和Python多态 ava中的多态跟Python中的多态是有区别的。 java中的多态定义: 多态存在的三个必要条件 一、要有继承; 二、要有重写; 三、父类引用指向子类对象 java 多态演示 public class Test { public ...
  • Java多态实现原理

    多人点赞 2021-06-03 16:06:38
    Java多态实现原理的大致过程:首先是Java编译器将Java源代码编译成class文件。在编译过程中,会根据静态类型将调用的符号引用写到class文件中。在执行时,JVM根据class文件找到调用方法的符号引用,然后在静态类型的...
  • 本文为大家整理汇总了,近年来比较常见且典型的Java多态面试题。当然,本次对面试题的总结整理,更加注重大家对于多态知识的掌握,而不仅仅只是对面试的应付。每道面试题后面都会附上相关问题的答案和分析,让大家...
  • Java多态原理

    2021-03-28 15:08:51
    Java多态原理 最近在准备面试,顺便复习以下Java最基础的东西 仅作参考 Java多态原理Java多态原理0. 什么是多态1. jvm内部类信息2. 多态的实现原理 为了更好地理解多态的原理,首先必须对jvm内存模型、Java方法调用...
  • java多态调用

    2022-04-30 16:41:25
    概念:多态是什么它就相当于区别对待,比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优 先买票。再者就是再举个详细的例子: 最近为了争夺在线支付市场,支付宝年底经常会做...
  • Java多态的理解

    千次阅读 2021-11-29 18:35:26
    Java 多态 除封装和继承之外,面向对象程序设计的第三个支柱。简单来说,多态意味着父类型的变量可以引用子类型的对象 ???? 多态:同一个行为具有不同表现形式或形态的能力,即对象多种表现形式的体现,例如子类的...
  • java多态简单例子详解

    千次阅读 2021-02-27 20:52:11
    java多态简单例子:首先有一个Animal类,它有Cat,和Dog两个子类;然后在Animal中有个say方法,当Cat调用这个方法的时候输出的是“小猫喵喵喵”,当Dog调用这个方法时,输出的是“小狗汪汪汪”。【相关学习推荐:...
  • java多态的讲解

    2018-08-06 21:38:04
    用代码实例和注释向你讲述什么是多态,实例更容易理解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 252,602
精华内容 101,040
关键字:

java多态

java 订阅
友情链接: Sytyse.zip