Java基础学习笔记-多态

### 1.认识多态
多态一词的通常含义是指呈现出多种不同的形式或形态。而在程序设计的术语中,它意味着一个特定类型的变量可以引用不同类型的对象,并且能自动地调用引用的对象的方法,也就是根据作用到的不同对象类型,响应不同的操作。
#### 什么是多态?
同类型的对象,执行同一个行为,会表现出不同的行为特征。
多态的常见形式
父类类型 对象名称 = new 子类构造器;
接口 对象名称 = new 实现类构造器;
### 2.向上转型
子类向父类的转换称为向上转型。
向上转型的语法格式如下。
<父类型> <引用变量名> = new <子类型>();
子类转换成父类时的规则:
>将一个父类的引用指向一个子类对象称为向上转型,系统会自动进行类型转换。
>此时通过父类引用变量调用的方法是子类覆盖或继承了父类的方法,不是父类的方法。
>此时通过父类引用变量无法调用子类特有的方法。
### 3.向下转型:必须先发生向上转型
当向上转型发生后,将无法调用子类特有的方法。但是如果需要用子类特有的方法,可以通过父类转换为子类实现。
>将一个指向子类对象的父类引用赋给一个子类的引用,即将父类类型转换为子类类型,称为向下转型,此时必须进行强制类型转换。
>向下转型的语法。
><子类型> <引用变量名> = (<子类型>)<父类型的引用变量>;
### 4.instanceof运算符
在向下转型的过程中,如果不是转换为真实子类类型,会出现转换异常。
变量名 instanceof 真实类型
判断关键字左边的变量指向的对象的真实类型,是否是右边类型或者是其子类类型,是则返回true,反之。
a.判断是否是对象名的实际类(转型)。
b.判断是否是接口实现类的对象(接口)。
c.判断是否是父类的子类对象(继承)。
### 5.多态的应用
1.使用父类作为方法的形参
使用父类作为方法的形参,是Java中实现和使用多态的主要方式。
2.使用父类作为方法的返回值
使用父类作为方法的返回值,也是Java中实现和使用多态的主要形式。
### 6.多态中成员访问特点
方法调用:编译看左边,运行看右边。
变量调用:编译看左边,运行也看左边(多态侧重行为多态)。
### 7.多态的前提
有继承/实现关系;有父类引用指向子类对象;有方法重写。
### 8.优势
在多态形式下,右边对象可以实现解耦合,便于扩展和维护。
![[多态.png]]
a.run( );//后续业务行为随对象而变,后续代码无需修改。

定义方法的时候,使用父类型作为参数,该方法就可以接收这父类的一切子类对象,体现出多态的扩展性与便利。

多态下不能使用子类的独有功能。
自动类型转换(从子到父):子类对象赋值给父类类型的变量指向。
强制类型转换(从父到子):此时必须进行强制类型转换:子类 对象变量 = (子类)父类类型的变量。
作用:可以解决多态下的劣势,可以实现调用子类独有的功能。
#### 注意:
如果转型后的类型和对象真实类型不是同一种类型,那么在转换的时候就会出现ClassCastException。
强制类型转换,编译阶段不报错的(注意:有继承或者实现关系编译阶段可以强制,没问题),运行时可能会出错的。
Java建议强转

转换前使用instanceof判断当前对象的真实类型,再进行强转转换。

你可能感兴趣的:(java,学习,笔记)