zoukankan      html  css  js  c++  java
  • 构建后端第6篇之---java 多态的本质 父类引用 指向子类实现

    张艳涛写于2021-2-20

    今天来个破例了,不用英文写了,今天在家里电脑写的工具不行,简单的说

    主题是:java多态的原理与实现

    结论是:java的多态 Father father= new Son();father.sayHi(),调用的是father类的方法,father的类是抽象类,那么将方法表中的地址重写为son的sayHi地址就成功了

    public abstract class A {
        public void wangwang(){
            System.out.println("WW~~~");
        }
        public abstract void sayHi();
    }
    
    public class B extends A {
        @Override
        public void sayHi() {
            System.out.println("hello , i am B~~");
        }
        public void methodB(){
            System.out.println("helo, this is method B~~");
        }
    }
    
    
    public class MyTest {
        public static void main(String[] args) throws IOException {
            B b = new B();
            System.in.read();
            System.out.println(b);
        }
    }

    那么可以先看字节码文件,来确定调用的是Father.sayHi()方法

    现在使用工具查看这个实例的虚拟机对象,jsp -->   10992 MyTest 

    D:devtoolsjdk1.8.0_45lib>java -cp sa-jdi.jar sun.jvm.hotspot.HSDB

    public class com.zyt.dpbook.jvm.B @0x0000000100060c18

    加上0x1b8

    mem 0x100060DD0 8 查看8条

    这里就是全部过程,vtbale 虚表显示object 的5个方法,然后是父类的方法(如果子类重写了就变更地址指向子类地址),最后地三部分是子类自己的方法

  • 相关阅读:
    代码规范
    今日头条广告投放
    网络广告计费方式CPM、CPA、CPS、CPT、CPC及比较分析
    dedecms arclist分页
    nginx配置http访问自动跳转到https
    阿里云《nginx服务器配置SSL证书》 配置参数
    JavaScript 通过身份证号获取出生日期、年龄、性别 、籍贯
    Bootstrap自适应各种设备
    css3动画大全
    golang
  • 原文地址:https://www.cnblogs.com/zytcomeon/p/14423195.html
Copyright © 2011-2022 走看看