zoukankan      html  css  js  c++  java
  • java重载与重写

    java方法重写与重载

    从jvm层面来说,重载是一种静态指派方式,那么它在编译期就已经确定了,比如一个类中相同的方法名称根据不同的参数类型和参数个数进行重载;

    而重写是一种动态链接行为,是需要java在运行期才能知道,需要指向的是哪个子类的哪个方法去执行。

    编译期能够静态指派方法有:1 构造方法,2 父类方法,3 静态方法,4 私有方法

    调用父类构造方法时使用invokeSpecial指令,调用重写或重载方法使用invokevirtual,调用静态方法使用invokeStatic

    父类:A ,子类:A1和A2

    A a1=new A1();

    A a2=new A2();

    a1.test();

    a2.test();

    方法重载是一个静态指派的过程,直接根据参数类型不同在编译期即可确定调用关系,而方法重写通过invokevirtual调用的时候,实际是先从当前线程的操作数栈顶取出当前的对象,然后根据invokevirtual中标记的父类方法描述符进行匹配如果完全匹配,就调用实际栈顶对象的目标方法;该过程称为java运行期的动态链接,是满足多态的一种实现

  • 相关阅读:
    XPath 入门
    用jQuery为页面添加活力
    将xml中的数据导入到数据库
    web.config 电邮配置
    一、创建Cuisl.dll工程
    使用ASP.NET服务器控件
    VSTO install error 0x80131604
    javaScript 5
    CSS 基础
    创建第一个ASP.NET网站
  • 原文地址:https://www.cnblogs.com/zzq-include/p/13152197.html
Copyright © 2011-2022 走看看