关于Java多态,总结01
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
多态(Polymorphic)
WHY?
多态存在的意义:
封装可以隐藏实现细节,使得代码模块化;
继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。
而多态除了代码的复用性外,还可以解决项目中紧偶合的问题,提高程序的可扩展性.。耦合度讲的是模块模块之间,代码代码之间的关联度,通过对系统的分析把他分解成一个一个子模块,子模块提供稳定的接口,达到降低系统耦合度的的目的,模块模块之间尽量使用模块接口访问,而不是随意引用其他模块的成员变量。
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是接口?
允许不同类的对象对同一消息做出响应
二、定义与使用规则HOW
1.代码规范
代码如下(示例):
//先定义一个animal大类,再定义一个子类Cat继承animal
左父类=右子类
Animal animal = new Cat();
2.使用规则
代码如下(示例):
1)访问成员变量(编译看左,运行也看左边)
看等号左边是谁,点出来的就是谁的变量(即看方法属于谁)
Animal animal = new Cat();
animal.成员变量
会点出来animal的变量
2)访问成员方法(编译看左,运行看右边)
点成员方法就可以了
Animal animal = new Cat();
animal.eat()//eat是animal中的方法,Cat类中继承并覆盖重写了eat方法。
三.关于向上转型和向下转型
1.向上转型就是普通的多态写法
即升级(把猫当作动物看待),原则上:编译看左,运行看右边。
2.向下转型
存在意义:举例,若是多态写法无法使用子类特有方法(),给这个类向下转型一波就可以了
1)向下转型就是个还原动作,将升级的父类对象还原为子类对象,原则上:必须保证之前是什么就还原成什么(猫升级为动物,必须还还原为猫而不是狗)
2)instanceof关键字进行判断:判断父类所指向的原本是什么?
本质上是个二元运算符,左边是实例化对象,右面是类
3)使用上类比基本数据类型的强制类型转换
public static void main(){
int a = 10;
double c = (double) a;
Cat cat = (Cat) animal;//(这里写想要强制转换的类型)
}
```java
在这里插入代码片
result = cat instanceof Animal
//是的话返回true,不是返回false
``
四.其他
1.参数列表是接口的时候,会自动向上转型
可以进行简写,直接cat.方法(new Animal());