0°

谈谈多态

内容预览:
  • “  三、多态的作用 简单讲就是解耦~
  • “  六、分析多态问题的几条原则 如果不去理解多态的原理,就从使用...~
  • 本文已获得授权~

始发于微信公众号: 程序员小乐

分享编程技能、互联网技术、生活感悟、打造干货分享平台,将总结的技术、心得、经验分享给大家,这里不只限于技术!还有职场心得、生活感悟、以及面经点击上方 “杨守乐” ,选择“置顶公众号”,第一时间送达!



 一、概述


我们都知道面向对象有四个基本特性:抽象、封装、继承、多态。这四个特性,概括起来可以这么理解,抽象、封装、继承是多态的基础,多态是抽象、封装、继承的表现。多态,是Java中非常重要的一个部分,所以今天来谈一下多态(Polymorphism)。

 二、什么是多态


不同类的对象对同一消息作出不同的响应就叫做多态。就像上课铃响了,上体育课的学生跑到操场上站好,上语文课的学生在教室里坐好一样。

 三、多态的作用


简单讲就是解耦。再详细点讲就是,多态是设计模式的基础,不能说所有的设计模式都使用到了多态,但是23种中的很大一部分,都是基于多态的。

 四、多态存在的三个条件


1、有继承关系  

2、子类重写父类方法  

3、父类引用指向子类对象

补充一下第二点,既然多态存在必须要有“子类重写父类方法”这一条件,那么以下三种类型的方法是没有办法表现出多态特性的(因为不能被重写):

1、static方法,因为被static修饰的方法是属于类的,而不是属于实例的

2、final方法,因为被final修饰的方法无法被子类重写

3、private方法和protected方法,前者是因为被private修饰的方法对子类不可见,后者是因为尽管被protected修饰的方法可以被子类见到,也可以被子类重写,但是它是无法被外部所引用的,一个不能被外部引用的方法,怎么能谈多态呢

 五、多态的分类


1、编译时多态,即方法的重载,从JVM的角度来讲,这是一种静态分派(static dispatch)

2、运行时多态,即方法的重写,从JVM的角度来讲,这是一种动态分派(dynamic dispatch)

关于这一点,在写到JVM的时候会详细讲到。

 六、分析多态问题的几条原则


如果不去理解多态的原理,就从使用的角度来讲,以个人的学习、工作这几年的经验,总结出了多态无非就是三句话:

比如我们有一个父类Father,有一个子类Children

1、向上转型是自动的。即Father f = new Children()是自动的,不需要强转

2、向下转型要强转。即Children c = new Father()是无法编译通过的,必须要Children c = (Children)new Father(),让父类知道它要转成具体哪个子类

3、父类引用指向子类对象,子类重写了父类的方法,调用父类的方法,实际调用的是子类重写了的父类的该方法。即Father f = new Children(),f.toString()实际上调用的是Children中的toString()方法

 七、后记


多态是Java语言体系中最基础、最重要的概念,工作中哪里都有用到,必须好好地将它理解透了。另外,本篇文章是本人博客园发的第一篇文章,希望以后写出更多更好、更有质量的文章。

如果您觉得不错,请别忘了转发、分享、点赞让更多的人去学习, 您的举手之劳,就是对小乐最好的支持,非常感谢!

如何您想进技术群和大牛们交流,关注公众号在后台回复 “加群”,或者 “学习” 即可

来自:五月的仓颉

链接:http://www.cnblogs.com/xrq730/p/4820237.html

著作权归作者所有。本文已获得授权。欢迎大家来投稿。

每日英文


Promise yourself to be so strong that nothing can disturb your peace of mind.

对自己承诺:我要强大到任何事情都无法破坏我内心的平和。


乐乐有话说


路是自己选的,所以即使以后会跌倒,会受伤,也都要学会自己承受,自己疗伤。我们都是这样,学会长大的。幸福没有标准答案,快乐也不止一条道路。自己喜欢的日子,就是最好的日子。自己喜欢的活法,就是最好的活法。


谈谈多态


推荐阅读



看完本文有收获?请转发分享给更多人
关注「杨守乐」,提升技能

以上就是:谈谈多态 的全部内容。

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论