父类 变量名 = new 子类();

对象的多态性:父类的引用指向子类的对象

Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明
该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。简
称:编译时,看左边;运行时,看右边。

若编译时类型和运行时类型不一致,就出现了对象的多态性(Polymorphism)。
多态情况下,“看左边”:看的是父类的引用(父类中不具备子类特有的方法);
“看右边”:看的是子类的对象(实际运行的是子类重写父类的方法)。

若子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法,系统将不可能把父类里的方法转移到子类中。
对于实例变量则不存在这样的现象,即使子类里定义了与父类完全相同的实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量


子类中重写了与父类的方法,在多态情况下,将此时父类的方法称为虚拟方法,父类根据赋给它的不同子类对象,动态调用属于子类的该重写方法。这样的方法调用在编译期是无法确定的。

一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的特有的属性和方法。


示例1:

示例2:

public class Test {public void method(Person e) {// ……
e.getInfo();
}
public static void main(Stirng args[]) {Test t = new Test();
Student m = new Student();
t.method(m); // 子类的对象m传送给父类类型的参数e
}
}

Java面向对象(11)--多态性相关推荐

  1. java 面向对象的多态性——向上转型与向下转型

    目录 类定义了之后需要被调用定义对象才能执行. 在前几篇中讨论了抽象类和接口,其中抽象方法是对这样的动作的抽象描述:动作名称相同,但不同类别具体执行动作的内容不同. 如:人类有"工作&quo ...

  2. JAVA:使用面向对象的多态性模仿会员卡消费系统,设计会员卡类,可派生不同的会员卡类型,当使用不同的会员卡消费时其折扣不同。

    使用面向对象的多态性模仿会员卡消费系统,设计会员卡类,可派生不同的会员卡类型,当使用不同的会员卡消费时其折扣不同.如一般会员卡消费打9折:VIP会员卡打7折:超级VIP卡打5折.其具体的实现效果如下所 ...

  3. 第7篇-JAVA面向对象Ⅲ

    第7篇-JAVA面向对象Ⅲ 每篇一句 :任何值得去的地方,都没有捷径 初学心得: 温故而知新 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-09| JAVA面向对象 Ⅲ] 1.J ...

  4. Java 基本功之(二)Java 面向对象

    转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/basis/Java%E5%9F%BA%E7%A1%80%E7%9F% ...

  5. java面向对象笔试_Java面向对象笔试题.doc

    Java面向对象笔试题 <Java面向对象>内部测试-笔试试卷 1.下列对Java中的继承描述错误的说法是(). 子类至少有一个基类 子类可作为另一个子类的基类 子类可以通过this关键字 ...

  6. JAVA 面向对象和集合知识点总结

    转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46481759  在Android编程或者面试中经常会遇到JAVA 面向对象和集合的 ...

  7. Java面向对象与代码编写

    Java面向对象与代码编写 面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么, ...

  8. Educoder- 《JAVA从小白到大牛》(第二章)2-3 Java面向对象 - 封装、继承和多态的综合练习

    提示:本文章为个人学习记录,仅供参考学习,禁止转载,支持交流与讨论. 文章目录 第1关:通关任务一 任务描述 相关知识 面向对象思想 封装 继承 `super()`和`this()` 编程要求 测试说 ...

  9. 《Java面向对象编程(阿里云大学)》笔记(文档+思维导图)

    课程链接:https://edu.aliyun.com/course/1011 (还是建议去看课程,笔记仅供参考. 由于文中的所有内容均为手敲,并且有些代码并未验证,因此如有错误,烦请指出~ 谢谢~~ ...

  10. Java面向对象 - 封装、继承和多态的综合练习

    面向对象的三个基本特征: 封装,就是把客观的事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的信息隐藏.隐藏实现细节,使得代码模块化. 继承,可以使用现有类的所有功能 ...

最新文章

  1. webpack代理配置打包后接口404_webpack 从零开始
  2. 内部收益率irr_介绍一个神器,内部收益率IRR
  3. 清华大学-美团数字生活联合研究院成立
  4. android 4.0系统,全新Android 4.0系统_手机Android频道-中关村在线
  5. InputStreamReader笔记
  6. 从 RNN 到 LSTM (Short-Term Memory)
  7. Struts2——知识点:Action Implements SessionAware
  8. mac下Cornerstone显示日志问题 Cound not contact repository to read the latest log entries
  9. struct字节计算
  10. mac 外接双显示器
  11. Vmware中桥接无法获取IP
  12. Alpha阶段敏捷冲刺④
  13. JS - 11 - 原型、继承 -
  14. Windows下Mysql数据库服务的关闭和重启
  15. load opencv videoio gstreamer453 64d dll failed 打开摄像头慢
  16. message:Error app.json app.json 未找到 public
  17. Flutter 里的语法糖解析,知其所然方能潇洒舞剑
  18. —++,--的虐待,小白的痛苦,自增与自减
  19. 使用 pynvml 得到显卡信息
  20. 在WindowsXP系统下搭建PPPoE服务器总结

热门文章

  1. 如何安装Gradle
  2. 使用密码摘要生成器扩展JMeter
  3. 完整的WebApplication JSF EJB JPA JAAS –第2部分
  4. androidtabhost缓存_FragmentTabHost布局的使用及优化方式
  5. IntelliJ IDEA for Mac 直接将模块硬盘上的根目录删除会怎么样
  6. table 多行 宽度不一致_layui table 中固定列的行高和table行高不一致
  7. java读取codetable_解析Java对象的equals()和hashCode()的使用
  8. g++ 编译mysql动态库_Linux下g++编译以及使用静态库和动态库的方法详解
  9. python编程狮题库答案_‎Python编程狮-零基础学Python dans l’App Store
  10. String大小转换函数