继承关系类的加载顺序、重写与重载
来源:互联网 发布:空间数据库吴信才 编辑:程序博客网 时间:2024/05/16 14:23
在聊类的加载顺序之前,首先了解一下JVM的运行时数据区:
虚拟机栈区:它是线程私有的,存放基本类型的数据、对象的引用和returnAddress;每个方法被执行的时候都会创建一个栈帧,用于存放局部变量表、操作数栈、动态链接、方法出口等信息。一个方法从被调用到执行结束的过程,对应着一个栈帧在虚拟机中从入栈到出栈。我们平时说的“堆栈”中的栈,就是Java虚拟机栈中局部变量表的部分。
局部变量表:编译时期可知的各种基本数据类型(long和double会占用两个局部变量空间,其余占一个)、对象的引用、和returnAddress(指向一条字节码指令的地址)
堆区:也叫Java堆或者GC堆,是线程共享的,存放对象的实例和数组,是GC主要管理的区域。
方法区:线程共享的,被虚拟机加载的类信息、常量、静态变量(常量池及类型卸载)
程序计数器:线程私有的,下一条指令的地址。
本地方法栈:线程私有
类的加载顺序:父类的静态成员变量->父类的静态代码块->子类的静态成员变量->子类的静态代码块 ,以上的执行是在类加载到方法区的时候的执行顺序。
new xxx()的操作:父类的非静态属性、非静态代码块->父类的构造方法->子类的非静态属性、非静态代码块->子类的构造方法
重写:
1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private);
3、重写的方法的返回值必须和被重写的方法的返回一致;
4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
6、静态方法不能被重写为非静态的方法(会编译出错)。
重载:
1、与返回值类型无关
2、方法名必须相同、参数形式必须不同。可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响;
注意:子类重写父类的方法后,调用的是子类的方法,即使是在父类中的调用也是如此。
- 继承关系类的加载顺序、重写与重载
- 方法的重载与重写的关系(区别);static关键字;单例设计模式;继承;
- 【转载】重写与重载的关系
- Java中的继承关系的加载顺序
- 类的继承/方法重写/重载
- 继承关系中对象创建过程加载顺序及方法重写
- 继承、多态,重载、重写的区别与总结
- 继承、多态,重载、重写的区别与总结
- 继承、多态,重载、重写的区别与总…
- 方法的重载与重写 区别 封装 继承 多态
- Java 中方法的重写,重载与覆盖的关系
- 子类与父类,以及子类的继承,重载与重写。
- 方法的重载、方法重写、类的继承与构造方法
- 重载与重写,继承与多态
- JAVA【类】析构器、重载与继承、方法的重写、自动转型、多态、方法与类的分类、接口继承
- 类的继承与重载
- java基础:继承关系类加载顺序问题
- 【Thinking in Java真题精选】2. 存在继承关系时的类加载顺序
- 常用SQL操作总结
- BZOJ1066【SCOI2007】蜥蜴 <网络流>
- web前端性能优化
- redis排行榜例子
- PuTTY远程访问Linux(网络配置)
- 继承关系类的加载顺序、重写与重载
- svn使用入门
- Reverse Linked List
- java变量的定义及使用
- JVM习题--二进制运算
- MySQL中的通用查询日志(General Query Log)
- 《C程序设计语言第2版·新版》读书笔记(一)
- 汇编与接口:熟悉debug工具以及基本的指令
- vue在nginx中部署