Java多态原理

多态的概念

多态分为:编译时多态,运行时多态

编译时多态:也叫做静态多态

      指的是方法的重载,在同一个类中,同样的方法签名却有不同的参数。编译时通过静态绑定就能实现。
运行时多态:也叫做动态多态

     指的是方法的重写,在具有继承关系的类中,子类重写了父类方法,方法签名和参数都一致,父类引用指向子类实例,该引用调用被重写方法时实际上调用的是子类的方法。需要运行时进行动态绑定实现
 

 jvm内部类信息:

      jvm使用类加载器将把类加载进方法区 

      同时在方法区维护了类的基本信息,其中就包括了方法信息,而为了能够快速访问具体方法

     每个类都有一个方法表,里面存放了指向对应方法的指针

       当需要调用某个类的方法时,只需要找到相应偏移量,就能够快速地找到对应的方法,如下图所示:

 

 

 

方法表的构成:

       某个类的方法表包含了Object类、祖先类、父类、自身的方法指针

      

 

 

多态的实现原理

   

public class A{
    //对比方法
    public void method1(){
        ...;
    }
    //被子类重写的方法
    public void method2(){
        ...;
    }
}

public class B extend A{
    //对比方法
    public void method3(){
        ...;
    }
    //重写了父类的方法
    @Override
    public void method1(){
        ...;
    }
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » Java多态原理