## 多态
### 1、定义
* 同一个对象,在程序不同时刻的多种运行状态。举例:水(气态,液态,固态)
### 2、实现多态的前提条件
1. 必须有继承或者实现关系
2. 必须有方法的重写
3. 父类(接口)的 引用指向子类(实现)的对象
### 3、多态的好处和弊端:
好处:
多态的存在提高了程序的扩展性和后期可维护性
弊端:
虽然可以预先使用,但是只能访问父类中已有的功能,运行的
是后期子类的功能内容。
不能预先使用子类中定义的特有功能。
### 4、多态中对象调用成员的特点
java在执行的时候分为两个时期:编译期,运行期
父类 子类 = 子类对象
Fu f = new Zi();
A:成员变量:编译期看类型,运行期看类型
编译看左边,运行看左边
B:成员方法:编译期看类型,运行期看对象
编译看左边,运行看右边
C:静态方法:编译期看类型,运行期看类型
编译看左边,运行看左边
### 5、多态的思想:
指挥同一批对象做事情。举例:带兵打仗,下课等。
### 6、多态的一个局限性:
* 只能够访问父类的成员变量和成员方法,不能访问子类自身对象里面的成员变量和成员方法
如何解决这个局限性,可以使用```向下转型```来操作
```
Son son = (Son) father;
son.love = "爱好";
```
备注:向下造型的时候需要注意转换的类型是否是需要的类型,可能会导致类型转换异常
可以通过```instanceof```关键字来避免类型转换异常
```instanceof```关键字作用:判断当前引用是否属于指定的对象类型
- JAVA笔记
- 01、Java扫盲
- 1、JVM、JRE和JDK的区别
- 2、环境变量path和classpath的作用是什么?
- 3、变量有什么用?为什么要定义变量?什么时候用?
- 4、&和&&的区别?
- 5、标示符命名规则
- 6、数据类型
- 7、类型转换
- 8、java语言的三种技术架构
- 9、java的跨平台性
- 10、有符号数据的表示法(次重点)
- 11、按位运算符
- 12、函数
- 13、重载
- 14、数组
- 15、内存结构
- 一、数据结构
- 随机数
- 流程控制语句
- if 和 if...else
- switch
- for
- 函数
- 重载
- 数组
- 数组的复制
- 冒泡排序法算法
- 方法
- 方法的重载
- 方法的练习
- 面向对象
- 面向对象的特点
- 如何创建类
- 如何创建对象
- 一、引用数据类型具有的默认值
- 二、成员变量和局部变量
- 三、构造函数
- 四、气球理论
- 五、继承(extends)
- 权限修饰符
- 封装
- 内存的分配
- 多态
- super关键字
- static关键字
- final关键字
- 抽象类 抽象方法(abstract)
- 接口(interface)
- 单例模式(singleton)
- Object类
- 内部类
- 匿名内部类
- 阶段项目
- 捕鱼达人
- 飞机大战
- 护盾功能
- 血条
- 爆炸
- API
- String 类相关的方法
- 第三方(Apache)jar包的使用
- 正则表达式
- StringBuffer 和StringBuilder 和Date
- 核心API:集合类
- List 集合
- 遍历集合的方式
- 包装类
- Map 集合
- 异常