首页 > 编程语言 >Java - 重载 与 重写 的区别

Java - 重载 与 重写 的区别

时间:2022-10-28 12:05:52浏览次数:47  
标签:Java 静态 分派 重载 动态 重写


静态分派与动态分派


1. 静态类型[外观类型] => 方法执行版本 => 编译期确定


2. 实际类型 => 方法执行版本 => 运行期确定


静态解析与动态连接


1. 静态解析:符号引用(class 文件中能无歧义的定位到目标的一串符号),有一部分会在类加载阶段或者第一次使用阶段就转化为直接引用(指针,相对偏移量,间接定位的句柄)


2. 动态连接:另一部分在每一次运行期间转化为直接引用



重载与重写

1 分派


Java 重载 => 静态分派


Java 重写 => 动态分派


2.1 重载


  • 方法名相同,参数类型、参数个数、不同
  • 多态

2.2 重写


  • 基于继承关系,子类重写父类方法,通过动态绑定(方法名,返回值类型,参数 相同)实现
  • 子类访问修饰权限不能少于父类

标签:Java,静态,分派,重载,动态,重写
From: https://blog.51cto.com/u_11290086/5804046

相关文章

  • Java - 类加载机制
    加载=>验证、准备、解析(链接)=>初始化类初始化时机1. 遇到new,getstatic,putstatic,invokestatic这四条字节码指令时,如果类没有进行过初始化,需要进行初始化......
  • Java - synchronized 和 volatile
    1.两者均可以实现可见性(线程B可以读到线程A更新的最新值)2.volatile本质就是告诉JVM,当前变量在寄存器中的值不确定,需要从主存中读取。synchronized锁定了当前变量,只有......
  • Java - Java 中的四种引用
    强引用Objecto=newObject();只要强引用还存在,垃圾回收器就永远不会回收掉该对象。软引用描述有用但是非必需的对象,使用softReference类来实现是否回收对象取决于J......
  • Java - 垃圾回收算法与垃圾回收器
    垃圾回收算法1.标记-清除过程:标记所有需要回收的对象,标记结束后,回收所有被标记的对象缺点:效率低下,容易造成碎片2.复制将内存空间分为两部分,每次只使用一部分,当一部分用......
  • Java - 简单可达性分析
    可以作为GCRoot的对象1.方法区中常量引用的对象2.方法区中静态属性引用的对象3.虚拟机栈中引用的对象4.本地方法栈中引用的对象可达性分析通过GC......
  • Java - <clinit> 与 <init>
    1..java=>编译=>.class=><clinit>=>类构造器2.类构造器将静态变量(初始化)和静态语句块收敛(将一系列操作集合起来执行)到<clinit>收敛顺序:父类静态变量......
  • Java - 简述JVM 内存模型
    JVM[来源:维基百科]程序计数器程序计数器是当前线程执行的字节码的行号指示器;程序计数器线程私有;程序计数器是JVM规范中唯一一个没有任何OutOfMemoryError的区域;虚......
  • Java - 创建子类实例时要先创建父类实例
    1.会访问方法区中父类的元数据2.会在堆内存中为父类分配空间,用来存储父类实例属性3.但是,这块堆内存属于子类所有......
  • Java中利用循环向list中add添加元素得到的都是最后一个
     背景:通过增强for循环,list.add()赋值,发现得到的元素都是最后一个  原因:list在add添加元素时访问的是该对象的引用地址,list中存储的全是实例化后的对象的地址,而java......
  • git提交指定文件,如果配合IDEA操作,改动文件自动add。使用命令行 git status 查看仓库状
    git提交指定文件如果配合IDEA操作,改动文件自动add。使用命令行gitstatus查看仓库状态,gitcommitsrc/main/java/com/test01.javasrc/main/java/com/test01.java......