多态的实现

article/2025/10/12 4:03:02

 多态实现条件
在Java中要实现多态,那么必须要满足以下几个条件,缺一不可:

必须在继承体系下
子类必须要对父类中的方法进行重写
通过父类的引用调用重写的方法
多态体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法。

public class Animal {String name;int age;public Animal(String name,int age){this.name = name;this.age = age;}public void eat(){System.out.println(name+"吃饭");}
}public class Cat extends Animal{public Cat(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println(name+"吃鱼");}
}public class Dog extends Animal{public Dog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println(name+"吃骨头");}
}
分割线/
public class TestAnimal {//编译器在编译代码的时候,并不知道要调用Dog还是Cat中eat的方法//等程序运行起来之后,形参a引用的具体对象确定后,才知道调用哪个方法//此时要注意:此处的形参类型必须是父类类型才可以,也就是向上转型public static void eat(Animal animal){animal.eat();}public static void main(String[] args){Cat cat = new Cat("元宝",2);Dog dog = new Dog("小七",1);eat(cat);eat(dog);}
}



运行结果👇

在上述代码中,分割线上方的代码是类的实现者 编写的,分割线下方的代码是类的调用者编写的
当类的调用者在编写eat();这个方法的时候,参数类型为Animal(父类),此时在该方法内部并不知道,也并不关注当前的animal引用指向的是哪个类型(哪个子类)的实例。此时animal这个引用调用eat方法可能会又多种不同的表现(和animal引用的实例对象相关),这种行为就叫做多态

 


http://chatgpt.dhexx.cn/article/T8IhuH6v.shtml

相关文章

java实现接口

接口的简述: 1、在java编程语言中,接口是属于抽象类型的,是抽象方法的结合,用interface来定义接口,一个类通过继承接口的方式,从而来继承接口的抽象方法;类可以继承接口,但是接口不可…

java实现链表

一、链表定义 链表通过指针将一组零散的内存块串联在一起进行使用。 数据格式: 根据上面的图展示,每个内存块可以称为链条的一个“结点”,结点包含了数据和下一个结点的地址;同时有2个结点特殊:第一个结点和最后一个…

redis实现延迟队列

前言:redis实现延迟队列该怎么做?在这里我分享一下 redis实现延迟队列 一、Redis实现延迟队列二、redis失效监听事件三、此种实现面临的问题四、开发准备五、基础实现六、使用redisson实现延迟队列七、redisson实现延迟队列的原理八、延迟队列配置九、疑…

如何设置时间格式

如何设置时间格式 开发工具与关键技术:VisualStudio C# 作者:落白 撰写时间:2019/06/26时间格式的转换是一个令人头疼的存在,格式稍微出了一点差错就保存不进数据库,或者在类型为时间类型的input标签中显示不出来。搞…

html如何修改时间,html怎么设置时间

html设置时间的方法:首先创建一个div;然后给该div添加一个class属性;最后通过“function realSysTime(clock){...}”方法设置时间即可。 本文操作环境:windows7系统、HTML5&&CSS3版、Dell G3电脑。 HTML设置一个当前时间s…

心跳检测时间设置

Eureka Client 向 Eureka Server 发送心跳的频率(默认 30 秒) client eureka:instance:# 如果x秒内,依然没有收到续约请求,判定服务过期,默认90slease-expiration-duration-in-seconds: 50# 每隔x秒钟,向服务中心发送…

window下时间设置

用了蛮长时间搞出点东西,还被上面鄙视了一番,算了不抱怨了,在鄙视中成长,在鄙视中强大。 我主要是完成两个两个功能:第一个是设置系统时间将其转换成十六进制精确到分钟显示出来(这个VC中有现成的api,以前…

Date、Time、DateTimes设置

撰写时间:2019年06月16日 在数据库中设置的Date、Time、datetime类型,在Vs中Date、datetime便会自动转化为DataTIme类型,而Time类型则会转化为TimeSpan类型 常常在查出时间、日期的数据时都会乱码,就像下图一样,那么…

如何更改Windows服务器时间

Windows操作系统自带时间同步功能,它会自动从互联网时间服务器获取时间,以保证系统时间的准确性。但是,有时候我们需要更改时间服务器,以获得更准确的时间同步。小编将为大家介绍如何更改Windows时间服务器,以及Window…

Windows将时间设置到秒的方法

使用win10系统的用户应该都发现了,Win10系统右下角时间只显示到分,不会显示到秒,如果想要看到秒的话,需要点击一下时间才会弹出。那么,Win10系统时间怎么显示到秒? 默认情况下,需要点击后方可查看时间详情…

设置linux的时间

目录 一、什么是时间 (1)例子1 (2)例子2 二、什么是本地时间 三、linux设置本地时间的方法 (1)方式一:通过互联网自动同步 1.修改时间同步服务器 2.查看时间同步情况 (2&…

win10电脑时间同步设置方法

win10系统的时间与日期默认是跟网络时间同步的,这样可以保持电脑时间的准确。不过有网友反映自己的win10电脑时间不对,调准时间后过段时间又是如此,不知道如何设置win10电脑时间同步。下面小编就教下大家win10电脑时间同步设置方法。 具体的…

简单3招教你设置电脑时间

案例:电脑时间怎么设置? 【我使用电脑时,电脑显示的时间一直不对,这导致我非常不方便,想问下大家平常使用电脑时有什么设置电脑时间比较简单的方法吗?】 电脑的时间设置很重要,不仅可以保证电…

超越函数e^(-x^2)收敛

超越函数e(-x2)收敛 Γ ( z ) ∫ 0 ∞ e − x 2 d t . \Gamma(z) \int_0^\infty e^{-x^2}dt\,. Γ(z)∫0∞​e−x2dt. 原函数不能直接积分所以采用极坐标变换的方式求解,本人自用码住

积分抵现

积分抵现设置教程 积分抵现 积分抵现包括积分抵现比率、是否开启积分抵现和积分说明。 其中,积分抵现比率为 1积分可抵多少元现金 转载于:https://my.oschina.net/u/4103048/blog/3099967

常见不可积积分

from sympy import * x symbols(x) a sin(x)/x b exp(x**2) c cos(x)/x d sin(x**2) e cos(x**2) f x/ln(x) g ln(x)/(x1) A integrate(a,x) # Si(x)-->超越函数 B integrate(b,x) # sqrt(pi)*erfi(x)/2-->erfi(x)误差函数 C integrate(c,x) # -log…

超越函数e^(-x^2)在(-∞, +∞)上的定积分的两种解法

令 解法一 二重积分极坐标 故 解法二 Γ函数余元公式 又由余元公式,有 于是 故

加速度计求二次积分

我是勤劳的搬运工:https://blog.csdn.net/u011006622/article/details/56286833 摘要 此文档描述并使用MMA7260QT三轴加速计和低功耗的9S08QG8八位单片机实现求解位置的算法 。 在今天先进的电子市场,有不少增加了许多特性和智能的多功能的产品。定…

python绘制积分函数_Python超越函数积分运算以及绘图实现代码

编译环境:ubuntu17.04 Python3.5 所需库:numpy、scipy、matplotlib 下面是理想平面的辐射强度计算(课程大作业~~~) 1、超越函数积分运算 def integral(x,c1,c2,T): return ((c1*0.98)/(x**5))*(1/((np.e**(c2/(x*T)))-…

高数 | 【定积分、变限积分】【一元函数积分学李林880】 及 巧解例题

一、定积分的概念、性质及几何意义 巧解:利用奇偶性,快速选出答案。 利用图形帮助解题。 设出具体函数。 二、定积分的计算 1.利用几何意义 2.换元法巧解 3.区间平移 本题也可用用区间再现 4.绝对值符号讨论 三、变上限定积分 三种变限积分形式 四、李…