JAVA中多态的理解

Java中多态的理解

JAVA中的多态可以简单的理解为一种事物的多种形态,当然多态是在继承的基础上有重写才存在。

标题如何理解一种事物的多种形态?

举个例子,拿人类、男人、女人来说。男人、女人、都分别继承了人类!
人类有鼻子、眼睛、嘴巴、男人或者女人都有。
人类会吃饭,会睡觉,会散步,男人或者女人都会。
但是在男人和女人都有自己独特的一些技能。比如说男人大多数力气很大。女人大多数都很漂亮。
以上是个前提。我们用代码去实现一下。
下面是定义的People类
在这里插入图片描述
下面是定义的男人类:并重写了People的eat和walk的方法,男人还有自己特有的方法为power
在这里插入图片描述
下面定义的是女人类:女人类也重写了People的eat和walk的方法,并且女人有自己特有的方法beautiful
在这里插入图片描述

⭐️⭐️⭐️⭐️⭐️感受多态⭐️⭐️⭐️⭐️⭐️⭐️⭐️

当我们在Main方法中去声明People类:people对象可以调用People类中的已经声明的方法和属性,这个不需要解释。如下图所示:
在这里插入图片描述
我们可以用创建一个父类的引用,用一个子类的对象去赋值。
创建父类的引用说白了就是构造一个父类的对象,在我们当前的逻辑中就是创建People的对象;
用一个子类的对象去赋值,就是可以用子类的对象去代替之前的new People();
在这里插入图片描述
因为Man类和Woman类都是继承People类的,也就是说,当用到People的时候,我可以直接用People的子类进行替代。同理声明Woman也是可以的:
在这里插入图片描述
这样的声明方式有一种特点,就是创建的对象p1能调用多少方法,看的是左边的类,在People p1 = new Woman();中,p1能调用多少属性和方法看的是左侧的People类。如下图所示:
在这里插入图片描述
可以调用出父类的一些属性和方法,当我们调用eat()方法时候,运行:
在这里插入图片描述
在这里插入图片描述
我们发现运行的是Woman中的eat方法
我们改变一下Woman中的eat方法名字,从eat改为eatsss
在这里插入图片描述
重新执行p1.eat()
运行的就是父类中的方法:
在这里插入图片描述

看完方法看属性:⭐️⭐️⭐️⭐️⭐️

给People类中增加一个属性 int ID 并且赋值为1;
在这里插入图片描述
给 Woman类中也增加一个属性 int ID =2;

在这里插入图片描述
在main函数中调用p1.ID并打印。
在这里插入图片描述
结果为1
在这里插入图片描述
也就是说 这样的情况下:People p1 = new Woman();
**调用的属性看的是左边的属性,方法需要看一下是否是重写的,因为你只能调用出People中的属性和方法,如果是在右侧的类中有重写的同名方法,调用的就是它,如果没有重写的方法,调用的就是左侧的类中的方法
**

**⭐️⭐️⭐️⭐️理解多态的开发用处⭐️⭐️⭐️👨🏿‍💻👨🏿‍💻👨🏿‍💻👨🏿‍💻👨🏿‍💻
还是借用上面的三个类来描述:
在main方法所在的类中,加人一个一个方法:
在这里插入图片描述这个方法的形参是是一个People类,我们上面说了,任何父类出现的地方,我们都可以用子类来替代。
当我们调用下该方法:
在这里插入图片描述

这就是多态中的使用,传入的对象调用那个具体的方法,还是要看是否有重写,有重写走子类重写,没有重写走父类的方法。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

zhangguan96

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值