Java多态理解
Java中引用类型变量有两个类型:编译时类型和运行时类型。编译时类型声明该变量使用的类型决定运行时类型有实际赋给的对象决定,如果编译时类型和运行时类型不一致,这就多态。
Java中多态可以分为两类:
1.方法的多态(重载、重写)
重载:静态多态(编译时的多态)重写:动态多态(运行时的多态)
2.对象的多态
向上转型:子类对象向下转型:父类对象(向下转型前,一定要先完成一次向上转型)
掌握两种形式的多态:
1.方法的重载、重写
重载:在同一个类中,多个方法名相同,参数列表不同(个数、类型、顺序),这就是重载。
2.对象的多态
向上转型: 子类对象----》父类对象类似于基本数据类型的自动类型转换
对象f表面上看是Father类对象,但是运行时调用say()实际是Son类的。
所以f对象编译时类型是Father,运行时类型是Son。这就是多态。
向下转型: 父类对象----》子类对象(向下转型前,一定要先完成一次向上转型)
类似于基本数据类型的强制类型转换:
多态优点
1. 消除类型之间的耦合关系2. 可替换性
3. 可扩充性
4. 接口性
5. 灵活性
6. 简化性
实现条件
Java实现多态有三个必要条件:继承、重写、向上转型实现形式
在Java中有两种形式可以实现多态。继承、接口。