多态的概述
多态概述
多态是同一个行为具有多种不同表现形式。
在Java中的体现形式是:
父类的引用指向子类的对象。
接口的引用指向实现类的对象。
多态的前提
有继承/实现关系。
有方法重写。
有 父类引用指向子类对象。 (或者接口指向实现类对象)
多态的成员访问
多态中成员访问特点
方法调用
编译看左边(父类),运行看右边(子类)。
变量调用
编译看左边(父类),运行也看左边(父类)。
多态的优缺点
多态的优点:
提高代码的扩展性。
定义方法时,如果将父类 或接口作为参数, 在调用方法时,可以传递任意子类对象极大提高方法的通用性。
提高代码的解耦性。
多态的缺点:
多态下不能使用子类的特有功能。
多态的类型转换
向上转型:子类到父类(自动类型转换)
向下转型:父类到子类(强制类型转换)
向下转型的好处:
由于多态下不能使用子类的特有功能。
所有向下转型后,就可以调用子类的特有功能。
向下转型的风险:类型转换异常
如果父类引用的 实际类型 与要转换的 目标类型 不同,就会出现类型转换异常:ClassCastException
避免类型转换异常
使用instanceof关键字进行类型判断
作用:判断左边的对象是否属于右边的类型,是返回true,否则返回false
Object
Object类的概述
Object是类层次结构的根,所有类都直接或者间接的继承自该类。
Object 类的常用方法
equals方法源码:
Object总结
总结
Object类
Object类是所有类的直接或者间接父类
toString方法
1.toString方法得到的是对象的地址值,格式为”类全名@16进制地址值”。
2.打印对象默认都是调用了toString方法,打印地址。
3.一般会重写toString方法,以便打印对象中的具体数据。
equals方法
1.比较两个对象是否相等,默认比较使用