类型转化,多态

Posted mcmx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类型转化,多态相关的知识,希望对你有一定的参考价值。

类型转换的概念(塑型)

  转换方式:隐式的类型转换,

       显式的类型转换

  转换方向:向上转型、向下转型;

类型转换规则

  基本类型之间的转换:

    >将值从一种类型转换成另一种类型;

  引用变量的类型转换:

    >将引用转换成另一种类型的引用,并不改变对象本身的类型;

    >只能被转为:

      >>任何一个超类的类型(向上转型)  

      >>对象所属的类实现的一个接口;

      >>被转为引用指向对象的类型(向下)解释:子类对象被父类引用所指向,这个父类引用可以转化为这个子类对象的子类引用;(唯一的情况:父类引用指向子类对象时可以向下转型)

      >>当一个引用被转为其超类引用后,通过他能够访问的只有在超类中声明过的方法(但还是子类的方法);

类型转换的主要应用场合

  赋值转换:赋值运算符右边的类型转换为左边的类型;

  方法调用转换:实参的类型转换为形参的类型

  算数表达式转换:算数混合运算时,不同类型的操作数转换为相同的类型再进行运算(向上转型)

  字符串转换:字符串链接运算,一个操作数为字符串时。自动转换为字符串(+);

 方法查找

实例方法

  子类对象的引用转化为父类的引用时,父类中有和子类相同的方法,子类将父类的方法覆盖,在这种情况下,调用此方法,应该调用的哪个方法

  从对象所属的类开始,按类的层次结构向上查找;

  实例方法是通过引用指向的对象进行查找的

类方法

  类方法是根据引用进行查找的,即你的引用是什么类类型,它就使用的哪个类的类方法;

  因为类方法是属于这个类的,而不属于任何一个对象,所以查找时不可以通过这个引用指向的对象进行查找了,只能通过这个引用所属的类进行查找;

   Java中的类方法和静态属性都可以被继承,只不过是处于隐藏状态 ,隐藏在之前的继承中提到过;

多态的概念

  超类对象和从相同的超类派生出来的多个子类的对象,可被当作同一种类型的对象对待;

  实现同一接口不同类型的对象,可被当作同一种类型的对象对待;

  可向这些不同的类型对象发送同样的消息,由于多态性,这些不同类的对象响应同一消息时的行为可以有所差别;(因为实现了相同的方法,方法的覆盖,所以功能相似,但是每个类的具体功能不同)

多态的目的

  使代码变的简单且容易理解;

  使程序具有很好的扩展性。

根据绑定时期不同,早绑定和晚绑定(动态绑定)

  早绑定(前期绑定):在程序的编译时期,类和类方法之间的绑定;

  晚绑定(动态绑定):在程序运行过程中,对象和实例方法之间的绑定;

二次方法技术

  对输出消息的请求被分发两次

例子:

  水果:    苹果    梨;

  人:  男人     女人:

  比如:男人吃苹果,男人在程序中建立对象,引用为人,调用人  吃   的这个方法,传入参数为实例对象苹果,形参为水果;水果调用方法  名称  ;根据实例方法的选择则会选择苹果的实例方法  名称;

以上是关于类型转化,多态的主要内容,如果未能解决你的问题,请参考以下文章

装箱 拆箱 枚举 注解 多态

课堂作业8多态

02.强制类型转化

如何把String类型转化成Integer类型

JS其他类型值转化为Boolean类型规则

类型转化