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类,我们上面说了,任何父类出现的地方,我们都可以用子类来替代。
当我们调用下该方法:

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

注:本文章为转载文章,表示博主同意文章出处的博主的观点。希望各位大佬不吝赐告,改善文章不妥之处,以免误人子弟,谢谢!

转载于:https://blog.csdn.net/zhangguan96/article/details/123721254

Java中关于多态的理解相关推荐

  1. java 中对多态的理解

    面向对象的三大特性:  封装  .继承.多态.其中多态算是比较重要的一部分,集合框架相关源码中大量应用其三大特性,所以说了解这三大特性,尤其是多态后,让你阅读源码的内功会更上一层楼. 了解多态之前必须 ...

  2. Java中的多态如何理解——详解

    概念

  3. java多态 降低代码耦合性_深度分析:理解Java中的多态机制,一篇直接帮你掌握!...

    Java中的多态 1 多态是什么 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.用白话来说,就是多个对象调用同一 ...

  4. 何为Java 中的多态?

    Java 中的多态一般分为两种:重写式多态和重载式多态. 重载式多态,也叫编译时多态.也就是说这种多态再编译时已经确定好了.重载大家都知道,方法名相同而参数列表不同的一组方法就是重载.在调用这种重载的 ...

  5. java中实现多态的机制

    多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次 ...

  6. java封装继承多态的理解_深入理解Java封装、继承、多态

    一:封装 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,常见的实现方式就是:getter.setter. 封装遵循了"开闭原则&qu ...

  7. 浅谈java中的多态

    浅谈java中的多态 学习了java一年的时间,这里对java的多态进行了一个总结,如有错误希望可以指出, 首先java的多态分为编译时的多态和运行时的多态,其中编译时的多态就是方法的重载(前期绑定) ...

  8. java中的多态_Java中的多态

    多态与HoFs 朋友们好久不见啊,最近笔者同时在写脚本型语言--JavaScript,和工业级的面向对象语言--Java. 在写代码的同时呢,也会思考这些语言的不同.今天就拿 Java 中的多态,来谈 ...

  9. Java 面向对象:多态的理解

    Java 面向对象:多态的理解 一.多态的定义 一个对象的实际类型是确定的,但可以指向引用对象的类型可以有很多(父类,有关系的类) 操作符的多态 +可以作为算数运算,也可以作为字符串连接 类的多态 父 ...

最新文章

  1. 计算机专业美国最好的学校排名,美国计算机专业大学排名
  2. oracle v$system_event,45.Oracle杂记——Oracle常用动态视图v$system_event
  3. 揭秘一个操作灰色关键词牟取暴利的案例
  4. 【Redis】新浪微博与微信Redis架构实战 - 笔记
  5. [转载] MFC绘制动态曲线,用双缓冲绘图技术防闪烁
  6. 速度与激情的Webpack
  7. ASP.NET 5 - $.ajax post JSON.stringify(para) is null
  8. 数据库数据变大会导致查询慢_是什么导致数据库变慢?
  9. JavaScript浏览器编程之——使用Cookie传递参数
  10. 【渝粤教育】电大中专品牌管理与推广 (2)_1作业 题库
  11. python(3)-内置函数2
  12. auto cad 打印颜色变浅_CAD初学者最容易忽视的CAD打印线宽问题,你“中枪”了吗?...
  13. http虚拟主机的简单配置训练
  14. 海湾gst5000主机消防广播_海湾消防主机JB-QG_T-GST5000_JB-QB-GST500控制器说明书.doc
  15. 大型网站技术架构-读后感
  16. 男人要象狗 女人要象猫
  17. GitHub 上排名前 100 的 IOS 开源库介绍
  18. 苹果市场占有率_快手充值快快币苹果版
  19. 广州地区常用的DNS解析服务器
  20. 寻找两个有序数组的中位数(虚拟数组图文详解)

热门文章

  1. python123求解一元二次方程_侄子今天问我这个一元二次方程怎么解!还好Python会解!...
  2. JS动态为对象添加属性
  3. 第二十四章:如何监控项目的质量和进度
  4. python实现多人聊天udp_python_udp_多人聊天室_简单版
  5. vim 查找并替换多个匹配字符
  6. 程序员年薪30万,偷车厘子解压被抓,网友:丢程序员的脸;蚂蚁集团专利数全球第一;华为开发者大会下月召开;Pulsar 2.7.1...
  7. 红米Note4(全网通/免解锁) 解BL锁教程 申请BootLoader解锁教程
  8. 软件性能测试--响应时间
  9. 猜价格游戏购物街c语言,猜数游戏实例
  10. 手把手教学IOS自定义cell-仿微信消息列表