74、多态性(129)
来源:互联网 发布:多得美工学院b段班 编辑:程序博客网 时间:2024/06/05 14:52
1、多态性的概念
2、多态性的两种情况
3、对象的多态性
4、多态性小结
掌握多态性的程度就可以看出对面向对象掌握的多少
1、多态性的概念
1、多态是面向对象三大特性之一
2、什么是多态性
三大特性:封装、继承、多态
面向对象四大特征:封装、继承、多态、抽象
多态:多种形态
2、多态性的两种情况
1、多态性我们大概可以分为两类
(1)方法的重载与重写
(2)对象的多态性
方法重载:同一类中同返回值同方法名参数列表不同
方法重写:子类继承的方法,且方法体不同
3、对象的多态性
对象的多态性是从继承关系中的继承多个类而来
向上转型:将子类实例转为父类实例
格式:父类 父类对象=子类实例; →自动转换
以基本数据类型操作为例:int i=’a’;
(因为char的容量比int小,所以可以自动完成,char两个字节,int四个字节)
子类的实例在堆内存中,而声明的父类对象则是在栈内存中,这里就是让父类声明的对象指向子类的实例,在栈内存中储存的地址就是子类的实例在堆内存中的地址
切记抽象类里的抽象方法一定要加abstract,而接口中一切皆默认为抽象,可不以加。
具体的实现中如何体现多态的概念了,把类(类型)看做什么了?
八种基本类型
引用类型(自定义类型、类库中已经定义好的类)
小瓶水往大瓶装没问题,大瓶水往小瓶装可能就装不小,强制转换可能发生精度溢出就类似于小瓶装不下水漏了出来
小变大自动转换
大变小强制转换
父类是大的,因为它越抽象表现的东西越多
Man extends Person
按照口语上来理解记忆
Man是Person,继承什么就是什么喔!
Person是Man就没不行,没这个说法。
两种运用例子(向上转型)
1、狼装成羊,将父类中的狼方法在继承的子类中覆写为羊方法,这样用上转对象调用方法时,就是狼类型调用了羊方法,也就是狼装成了羊。
子类覆盖了父类的方法,运行时看new谁的对象,new谁的对象调用谁的方法
2、Person这个类型,有两个子类Women、 Man,new两个子类的对象时,就有两种不同的形态。每一种形态里都有不同的方法和属性。 也就是面向对象编程思想中,对象的不同行为和特征
向下转型:将父类实例转换为子类实例
格式:子类 子类对象=(子类)父类实例; 强制转换
以基本数据类型操作为例:char c=(char)97;
因为整型是4个字节比char2个字节要大,所以需要强制完成
java.lang.ClassCastException 类型转换异常
没有父子关系的两种类型不能强制转化哦
可以编译,但是运行时会出现异常
编程思想:人是父类,男人是人,女人是人,但男女之间不能强制转换
4、多态性小结
1、方法的重载与重写就是方法的多态性表现
2、多个子类就是父类中的多种形态
3、父类引用可以指向子类对象,自动转换(隔几代也行,爷爷都行)
4、子类对象指向父类引用需要强制转换(注意:类型不对会报异常)
5、在实际开发中尽量使用父类引用(更利于扩展:面向接口编程,面向抽象类编程)
- 74、多态性(129)
- 多态性(一)——静态多态性
- Polymorphism(多态性)
- C++ 多态性(1)
- C++多态性(二)
- 多态性(重点)
- 多态性(polymorphism)
- C++多态性(二)
- 多态性
- 多态性
- 多态性!
- 多态性
- 多态性
- 多态性
- 多态性
- 多态性
- 多态性
- 多态性
- CXF实现webservice (一)
- Java虚拟机常用指令(二十二)
- C语言关键字Inline
- codevs 1215 迷宫
- Kotlin-18.对象(object expressions/declarations)
- 74、多态性(129)
- 路由表生成算法
- Java反射机制详解
- 剑指offer——数组中的逆序数_____(归并排序)
- 大二这个年纪
- 前端学习笔记4:CSS的继承、层叠和特殊性
- HTML常用标签小结
- [Sklearn应用2] Preprocessing data (二)Binarization 二分化
- 设计模式--工厂模式(六)