黑马程序员-继承,多态
来源:互联网 发布:域名备案需要的资料 编辑:程序博客网 时间:2024/04/28 16:40
多态:可理解为事物存在的多种体现形态。又称为动态绑定,是java的核心机制之一。
理解:多态是在运行期间,判断引用实际类型,根据实际类型调用相应的方法。
比如说人又男女之分,动物有猫、狗等之分
一、多态的体现形式:
1、父类的引用指向了自己子类的对象。
2、父类的引用可接收子类的对象。
二、多态的前提:
1、必须是类与类之间的关系,如继承和实现关系
2、要存在覆盖的操作,父类中必须由方法被子类覆盖,即重写
3、有父类引用指向子类对象
三、多态的利弊:
1、好处:大大提高了程序的扩展性
2、弊端:虽然提高扩展性,但是只能使用父类的引用访问父类中的成员,不可预先使用子类。这是由于,子类在父类之后加载,此时还没有子类被加载。
在下面的代码中,Animal a = new Cat();是一种“类型提升,向上转型”的过程。如果要实现Cat中的其他Animal没有的功能,那么就需要强制将父类的引用转换成子类类型,然后再调用子类的方法
四、多态的特点:
1、在多态中成员函数的特点:
·编译时期:参阅引用型变量所属的类中,是否有调用的方法,如果有,则编译通过,若没有,则编译失败。如上面的代码中,引用型变量a是父类Animal的类型,其中有eat 的方法,所以没问题,但是如果调用a.catchM()就会编译失败。
·运行时期:参与对象所属的类中,是否有调用的方法。如引用型变量c是所属于Cat类型的,可以调用c.catchM()
总结:成员函数在多态调用时,编译看左边,运行看右边。子类中局部有变量就访问局部的,没有就访问成员的变量,成员中没有的就在父类中找;如果父类中没有,编译失败。
2、在多态中成员变量(和静态成员)的特点:
·无论编译和运行,都参考左边的,即引用型变量所属的类型。也就是说父类中有自己的变量,则先找父类自己的成员。
·非静态有重写的特点,静态一般不被重写。
原因:因为当调用静态方法时,只要建立子类对象,父类与子类中的静态方法都会随之加载入内存,是不需要调用就可直接用类名.方法名的,而不需要对象。只要引用还存在,就看引用变量的类型。
- 黑马程序员-继承,多态
- 黑马程序员----------继承 多态
- 黑马程序员 封装、继承、多态
- 黑马程序员----------继承、接口、多态
- 黑马程序员_继承、接口、多态
- 黑马程序员_基础、封装、继承、多态
- 黑马程序员_面向对象--继承、多态
- 黑马程序员_封装、继承、多态
- 【黑马程序员】java中--------------封装、继承、多态
- 黑马程序员_OC_封装,继承,多态
- 黑马程序员_OC_封装.继承.多态
- 黑马程序员_封装、继承、多态
- 黑马程序员-继承,组合,super,多态
- 黑马程序员——继承,多态,接口
- 黑马程序员--OC--封装、继承、多态
- 黑马程序员-java基础之继承,多态
- 黑马程序员--Object-C--03--继承、多态
- 黑马程序员_封装、继承、多态
- phpUnit (安装pear)
- c++设计模式—装饰模式
- Oracle外键查询禁用启用删除
- Ajax实现局部刷新
- HDU 2995 Another Panda's Birthday Present(条件概率|概率生成函数 )
- 黑马程序员-继承,多态
- 如何在asp.net中如何在线播放各类视频文件
- Flex 通信协议简单介绍
- MySQL grant 语法的详细解析
- ThinkPHP中SQL调试方法
- shell脚本判断设备节点是否存在
- CodeForces 332 B. Maximum Absurdity 动规 求和最大的两段连续子列
- C# toolstrip 控件下方有一条白条 去除方法
- Struts2使用Kindeditor4.0.3在线编辑器--上传图片、视频、FLASH、附件