类型转化,多态
Posted mcmx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类型转化,多态相关的知识,希望对你有一定的参考价值。
类型转换的概念(塑型):
转换方式:隐式的类型转换,
显式的类型转换
转换方向:向上转型、向下转型;
类型转换规则:
基本类型之间的转换:
>将值从一种类型转换成另一种类型;
引用变量的类型转换:
>将引用转换成另一种类型的引用,并不改变对象本身的类型;
>只能被转为:
>>任何一个超类的类型(向上转型)
>>对象所属的类实现的一个接口;
>>被转为引用指向对象的类型(向下)解释:子类对象被父类引用所指向,这个父类引用可以转化为这个子类对象的子类引用;(唯一的情况:父类引用指向子类对象时可以向下转型)
>>当一个引用被转为其超类引用后,通过他能够访问的只有在超类中声明过的方法(但还是子类的方法);
类型转换的主要应用场合:
赋值转换:赋值运算符右边的类型转换为左边的类型;
方法调用转换:实参的类型转换为形参的类型
算数表达式转换:算数混合运算时,不同类型的操作数转换为相同的类型再进行运算(向上转型)
字符串转换:字符串链接运算,一个操作数为字符串时。自动转换为字符串(+);
方法查找:
实例方法:
子类对象的引用转化为父类的引用时,父类中有和子类相同的方法,子类将父类的方法覆盖,在这种情况下,调用此方法,应该调用的哪个方法
从对象所属的类开始,按类的层次结构向上查找;
实例方法是通过引用指向的对象进行查找的
类方法:
类方法是根据引用进行查找的,即你的引用是什么类类型,它就使用的哪个类的类方法;
因为类方法是属于这个类的,而不属于任何一个对象,所以查找时不可以通过这个引用指向的对象进行查找了,只能通过这个引用所属的类进行查找;
Java中的类方法和静态属性都可以被继承,只不过是处于隐藏状态 ,隐藏在之前的继承中提到过;
多态的概念:
超类对象和从相同的超类派生出来的多个子类的对象,可被当作同一种类型的对象对待;
实现同一接口不同类型的对象,可被当作同一种类型的对象对待;
可向这些不同的类型对象发送同样的消息,由于多态性,这些不同类的对象响应同一消息时的行为可以有所差别;(因为实现了相同的方法,方法的覆盖,所以功能相似,但是每个类的具体功能不同)
多态的目的:
使代码变的简单且容易理解;
使程序具有很好的扩展性。
根据绑定时期不同,早绑定和晚绑定(动态绑定):
早绑定(前期绑定):在程序的编译时期,类和类方法之间的绑定;
晚绑定(动态绑定):在程序运行过程中,对象和实例方法之间的绑定;
二次方法技术:
对输出消息的请求被分发两次
例子:
水果: 苹果 梨;
人: 男人 女人:
比如:男人吃苹果,男人在程序中建立对象,引用为人,调用人 吃 的这个方法,传入参数为实例对象苹果,形参为水果;水果调用方法 名称 ;根据实例方法的选择则会选择苹果的实例方法 名称;
以上是关于类型转化,多态的主要内容,如果未能解决你的问题,请参考以下文章