Java面向对象(11)--多态性
父类 变量名 = 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)--多态性相关推荐
- java 面向对象的多态性——向上转型与向下转型
目录 类定义了之后需要被调用定义对象才能执行. 在前几篇中讨论了抽象类和接口,其中抽象方法是对这样的动作的抽象描述:动作名称相同,但不同类别具体执行动作的内容不同. 如:人类有"工作&quo ...
- JAVA:使用面向对象的多态性模仿会员卡消费系统,设计会员卡类,可派生不同的会员卡类型,当使用不同的会员卡消费时其折扣不同。
使用面向对象的多态性模仿会员卡消费系统,设计会员卡类,可派生不同的会员卡类型,当使用不同的会员卡消费时其折扣不同.如一般会员卡消费打9折:VIP会员卡打7折:超级VIP卡打5折.其具体的实现效果如下所 ...
- 第7篇-JAVA面向对象Ⅲ
第7篇-JAVA面向对象Ⅲ 每篇一句 :任何值得去的地方,都没有捷径 初学心得: 温故而知新 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-09| JAVA面向对象 Ⅲ] 1.J ...
- Java 基本功之(二)Java 面向对象
转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/basis/Java%E5%9F%BA%E7%A1%80%E7%9F% ...
- java面向对象笔试_Java面向对象笔试题.doc
Java面向对象笔试题 <Java面向对象>内部测试-笔试试卷 1.下列对Java中的继承描述错误的说法是(). 子类至少有一个基类 子类可作为另一个子类的基类 子类可以通过this关键字 ...
- JAVA 面向对象和集合知识点总结
转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46481759 在Android编程或者面试中经常会遇到JAVA 面向对象和集合的 ...
- Java面向对象与代码编写
Java面向对象与代码编写 面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么, ...
- Educoder- 《JAVA从小白到大牛》(第二章)2-3 Java面向对象 - 封装、继承和多态的综合练习
提示:本文章为个人学习记录,仅供参考学习,禁止转载,支持交流与讨论. 文章目录 第1关:通关任务一 任务描述 相关知识 面向对象思想 封装 继承 `super()`和`this()` 编程要求 测试说 ...
- 《Java面向对象编程(阿里云大学)》笔记(文档+思维导图)
课程链接:https://edu.aliyun.com/course/1011 (还是建议去看课程,笔记仅供参考. 由于文中的所有内容均为手敲,并且有些代码并未验证,因此如有错误,烦请指出~ 谢谢~~ ...
- Java面向对象 - 封装、继承和多态的综合练习
面向对象的三个基本特征: 封装,就是把客观的事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的信息隐藏.隐藏实现细节,使得代码模块化. 继承,可以使用现有类的所有功能 ...
最新文章
- webpack代理配置打包后接口404_webpack 从零开始
- 内部收益率irr_介绍一个神器,内部收益率IRR
- 清华大学-美团数字生活联合研究院成立
- android 4.0系统,全新Android 4.0系统_手机Android频道-中关村在线
- InputStreamReader笔记
- 从 RNN 到 LSTM (Short-Term Memory)
- Struts2——知识点:Action Implements SessionAware
- mac下Cornerstone显示日志问题 Cound not contact repository to read the latest log entries
- struct字节计算
- mac 外接双显示器
- Vmware中桥接无法获取IP
- Alpha阶段敏捷冲刺④
- JS - 11 - 原型、继承 -
- Windows下Mysql数据库服务的关闭和重启
- load opencv videoio gstreamer453 64d dll failed 打开摄像头慢
- message:Error app.json app.json 未找到 public
- Flutter 里的语法糖解析,知其所然方能潇洒舞剑
- —++,--的虐待,小白的痛苦,自增与自减
- 使用 pynvml 得到显卡信息
- 在WindowsXP系统下搭建PPPoE服务器总结
热门文章
- 如何安装Gradle
- 使用密码摘要生成器扩展JMeter
- 完整的WebApplication JSF EJB JPA JAAS –第2部分
- androidtabhost缓存_FragmentTabHost布局的使用及优化方式
- IntelliJ IDEA for Mac 直接将模块硬盘上的根目录删除会怎么样
- table 多行 宽度不一致_layui table 中固定列的行高和table行高不一致
- java读取codetable_解析Java对象的equals()和hashCode()的使用
- g++ 编译mysql动态库_Linux下g++编译以及使用静态库和动态库的方法详解
- python编程狮题库答案_Python编程狮-零基础学Python dans l’App Store
- String大小转换函数