多态的概述

多态概述

多态是同一个行为具有多种不同表现形式。
在Java中的体现形式是:
父类的引用指向子类的对象。
接口的引用指向实现类的对象。

多态的前提

有继承/实现关系。
有方法重写。
有 父类引用指向子类对象。 (或者接口指向实现类对象)

多态的成员访问

多态中成员访问特点
方法调用
编译看左边(父类),运行看右边(子类)。
image.png

变量调用
编译看左边(父类),运行也看左边(父类)。
image.png

多态的优缺点

多态的优点:

提高代码的扩展性。
定义方法时,如果将父类 或接口作为参数, 在调用方法时,可以传递任意子类对象极大提高方法的通用性。
提高代码的解耦性。

多态的缺点:

多态下不能使用子类的特有功能。

多态的类型转换

向上转型:子类到父类(自动类型转换)
image.png
向下转型:父类到子类(强制类型转换)
image.png

向下转型的好处:
由于多态下不能使用子类的特有功能。
所有向下转型后,就可以调用子类的特有功能。

向下转型的风险:类型转换异常

如果父类引用的 实际类型 与要转换的 目标类型 不同,就会出现类型转换异常:ClassCastException
image.png

避免类型转换异常

使用instanceof关键字进行类型判断
image.png
作用:判断左边的对象是否属于右边的类型,是返回true,否则返回false

Object

Object类的概述

Object是类层次结构的根,所有类都直接或者间接的继承自该类。

Object 类的常用方法

image.png

toString方法源码:
作用:默认打印对象地址
image.png

equals方法源码:

作用:默认比较两个对象地址是否相等
image.png

Object总结

总结

Object类
Object类是所有类的直接或者间接父类

toString方法

1.toString方法得到的是对象的地址值,格式为”类全名@16进制地址值”。
2.打印对象默认都是调用了toString方法,打印地址。
3.一般会重写toString方法,以便打印对象中的具体数据。

equals方法

1.比较两个对象是否相等,默认比较使用