java多态的特性

一、基本概念

        多态:继承的基础上实现的(继承、重写、父类引用指向子类对象);

二、特点

      1、 动态绑定(运行时绑定、后期绑定):运行时根据对象判断调用对应的重写的方法,也就是说编译器在运行前是一直不知到对象的类型,直到运行时才会通过对象的类型来调用对应的方法;

       java中所有的所有方法,除static与final方法外,都是后期绑定;

       2、缺陷:域与静态方法

                当父类与子类具有同名的变量(非静态变量),且修饰都为非private类型,则不具有多态性;

                静态的方法不具有多态性,他是随着类加载而加载的,与对象无关;

       3、父类、子类中均有构造方法,则调用顺序?

              (1)、调用基类构造器,递归调用下去(先调用父类然后调用子类);

              (2)、当一个对象被创建时,其所有的全局变量均会被赋值,且在发生任何事物之前,将分配给对象的存储空间转换成二进制的零;

       4、协变返回类型

              导出类的被覆盖的方法可以返回基类方法的返回类型;

       5、向上转型、向下转型

             向上转型:父类的引用指向子类的对象;

                        好处:多态;

                        弊端:会丢失具体类的信息(比如子类中若有父类中没有的方法,则向上转型则不能调用这个方法),解决办法----------------向下转型;

            向下转型:父类转换为子类,但是:前提是声明向上转型,否则会报错(若有覆盖的方法);

猜你喜欢

转载自blog.csdn.net/qq_36959774/article/details/82847713