Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java | 类、实例初始化 、方法重写规则

Java | 类、实例初始化 、方法重写规则

作者头像
.29.
发布于 2023-10-17 09:51:23
发布于 2023-10-17 09:51:23
2120
举报
文章被收录于专栏:个人技术博客个人技术博客

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~

类、实例初始化 、方法重写规则
  • 类的初始化过程
    • ①一个类要创建实例需要先加载并初始化该类
      • 此时main方法所在的类要先加载和初始化。
    • ②一个子类要初始化需要先初始化父类
    • ③一个类初始化就是执行<clinit>()方法
      • <clinit>()方法由静态类变量显示赋值代码和静态代码块组成。
      • 静态类变量显示赋值代码和静态代码块代码从上到下顺序执行。
      • <clinit>()方法只执行一次。
  • 实例初始化过程
    • ①实例初始化就是执行<init>()方法
      • <init>()方法可能重载有多个,有几个构造器就有几个<init>()方法。
      • <init>()方法由非静态实例变量显示赋值代码和非静态代码块代码从上到下顺序执行,对应构造器的代码最后执行。
      • 每次创建实例对象,调用对应构造器,执行的就是对应的<init>()方法。
      • <init>()方法的首行时super()或super(实参列表),即对应父类的<init>()方法。(先执行父类的<init>()方法)
  • 方法的重写Override
    • ①不可以被重写的方法:
      • final方法
      • 静态方法
      • private等子类中不可见的方法
    • ②对象的多态性:
      • 子类如果重写了父类的方法,通过子类调用的一定是子类重写过的方法。
      • 非静态方法默认的调用对象时this。
      • this对象在构造器或者说<init>()方法中表示正在创建的对象。
  • Override重写的要求:
    • 方法名一致
    • 形参列表一致
    • 返回值类型一致
    • 抛出的异常列表一致
    • 修饰符一致
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java面试题总结
自增变量 主要是对 i++ 和 ++i 的理解 public class Test01 { public static void main(String[] args) { // 变量自增 i++ ++i的理解 int i = 1; i = i++; // int j = i++; int k = i + ++i * i++; System.out.println("i=" + i);
shaoshaossm
2022/12/27
2930
Java面试题总结
一网打尽“类”的初始化实例化知识点
之前说了类加载的过程,但是有的读者表示还是有些面试题还是答不来,所以今天就来总结下类加载、对象实例化方面的知识点/面试题,帮助大家加深印象。
码上积木
2021/01/11
6350
基础篇:详解JAVA对象实例化过程
1 对象的实例化过程 对象的实例化过程是分成两部分:类的加载初始化,对象的初始化 要创建类的对象实例需要先加载并初始化该类,main方法所在的类需要先加载和初始化 类初始化就是执行<clinit>方法
潜行前行
2020/12/11
2K0
基础篇:详解JAVA对象实例化过程
大数据技术之_31_Java 面试题_01_JavaSE 面试题 + SSM 面试题 + Java 高级面试题 + Java 项目面试题
要点: 1、某个类只能有一个实例;   构造器私有化 2、它必须自行创建这个实例;   含有一个该类的静态变量来保存这个唯一的实例 3、它必须自行向整个系统提供这个实例;   对外提供获取该实例对象的方式:   (1)直接暴露   (2)用静态变量的get方法获取
黑泽君
2019/06/19
8641
大数据技术之_31_Java 面试题_01_JavaSE 面试题 + SSM 面试题 + Java 高级面试题 + Java 项目面试题
java编程——从jvm角度看懂类初始化、方法重写、重载
类的声明周期可以分为7个阶段,但今天我们只讲初始化阶段。我们我觉得出来使用和卸载阶段外,初始化阶段是最贴近我们平时学的,也是笔试做题过程中最容易遇到的,假如你想了解每一个阶段的话,可以看看深入理解Java虚拟机这本书。
慕容千语
2019/06/11
5260
深入理解Java对象的创建过程:类的初始化与实例化
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完成类的初始化。在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化。本文试图对JVM执行类初始化和实例化的过程做一个详细深入地介绍,以便从Java虚拟机的角度清晰解剖一个Java对象的创建过程。
用户7886150
2020/12/07
2.7K0
深入理解Java对象的创建过程:类的初始化与实例化
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完成类的初始化。在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化。本文试图对JVM执行类初始化和实例化的过程做一个详细深入地介绍,以便从Java虚拟机的角度清晰解剖一个Java对象的创建过程。
Java团长
2018/08/03
3.3K0
JVM类加载过程
加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序进行,而解析阶段则不一定,它在某些情况下可能在初始化阶段后在开始,因为java支持运行时绑定。
全栈程序员站长
2022/07/21
7580
JVM类加载过程
java 虚拟机内存划分,类加载过程以及对象的初始化
虚拟机运行时内存 java内存划分 类加载顺序  类加载时机  类加载步骤  对象初始化顺序  构造代码块顺序 构造方法 顺序 内存区域   java内存图  堆 方法区 虚拟机栈 本地方法栈 程序计数器  局部变量表   栈帧  java堆 运行时常量池   直接内存
noteless
2018/09/11
8240
java 虚拟机内存划分,类加载过程以及对象的初始化
从jvm角度看懂类初始化、方法重载、重写。
类的声明周期可以分为7个阶段,但今天我们只讲初始化阶段。我们我觉得出来使用和卸载阶段外,初始化阶段是最贴近我们平时学的,也是笔试做题过程中最容易遇到的,假如你想了解每一个阶段的话,可以看看深入理解Java虚拟机这本书。
帅地
2018/08/30
6630
从jvm角度看懂类初始化、方法重载、重写。
Java:关于Static静态关键字的那些小事
前言 在Java中,静态 Static关键字使用十分常见 本文全面 & 详细解析静态 Static关键字,希望你们会喜欢 目录 1. 定义 一种 表示静态属性的 关键字 / 修饰符 2. 作用 共用、
Carson.Ho
2019/02/22
4530
Java 面试题
在 Spring 的配置文件中,给 bean 加上 scope 属性来指定 bean 的作用域如下:
用户9615083
2022/12/30
6340
Java 面试题
JVM类加载、验证、准备、解析、初始化、卸载过程详解
任何程序都需要加载到内存才能与CPU进行交流,同理, 字节码.class文件同样需要加载到内存中,才可以实例化类。 ClassLoader的使命就是提前加载.class 类文件到内存中,在加载类时,使用的是Parents Delegation Model(溯源委派加载模型)。
JavaEdge
2021/02/22
3950
JVM类加载、验证、准备、解析、初始化、卸载过程详解
Android:知道类加载的过程面试还是卡壳?干货总结,一网打尽“类”的基础知识!
之前说了类加载的过程,但是有的读者表示还是有些面试题还是答不来,所以今天就来总结下类加载、对象实例化方面的知识点/面试题,帮助大家加深印象。
Android技术干货分享
2021/03/19
4140
Android:知道类加载的过程面试还是卡壳?干货总结,一网打尽“类”的基础知识!
【Jvm】Jvm类加载机制
PS: NoClassDeFoundError:发生在类生命周期中解析阶段找不到相应的类 ClassNotFoundException发生在类生命周期的加载阶段,找不到相应的类。
石臻臻的杂货铺[同名公众号]
2021/07/14
6630
深度分析:Java类加载机制和类加载器
所谓类加载机制就是JVM虚拟机把Class文件加载到内存,并对数据进行校验,转换解析和初始化,形成虚拟机可以直接使用的Jav类型,即Java.lang.Class。
会呼吸的Coder
2020/07/03
7180
JDK15类的后半生:准备、解析、初始化、卸载过程详解
但若是被final修饰,若有初始值,则在编译阶段就会将初始值存入constantValue属性中,在准备阶段就将constantValue的值赋给该字段(此处将value赋为123)。
JavaEdge
2021/02/23
3020
JDK15类的后半生:准备、解析、初始化、卸载过程详解
从JVM 源码看init和clinit到底什么区别
准备阶段,变量已经赋过一次系统要求的初始值 在初始化阶段,则根据程序员通过程序制定的主观计划去初始化类变量和其他资源,或者可以从另外一个角度来表达:初始化阶段是执行类构造器<clinit>方法的过程。
JavaEdge
2020/05/26
8880
java学习笔记(基础篇)—关键字static和final
a)所有类实例共享 b)使用静态变量 类名.变量名 c)静态变量是属于这个类,非静态变量是属于对象 d)代码加载到内存静态变量就已经存在了 e)static变量和实例变量的区别: i)static变量对于每个类而言在内存中只有一个,能被类的所有实例所共享; 实例变量对于每个类的每个实例都有一份,它们之间互不影响; ii)Java虚拟机在加载类的过程中为static变量分配内存, 实例变量在加载完类后创建对象时分配内存; iii)static变量存在方法区,实例变量存在堆区; v)static变量可以直接通过类名访问, 实例变量通过引用类型变量访问;
chlinlearn
2019/07/24
3530
【Java SE学习】Day6 JavaSE面向对象(下)看着三篇就够了
        前面我们已经讲述了面向对象三大特性:封装性、继承性、多态性,讲述了面向对象重要组成部分,今天讲的是面向对象(下),关于static,final,interface,abstart等重要关键字。
小小程序员
2023/02/24
4060
【Java SE学习】Day6 JavaSE面向对象(下)看着三篇就够了
推荐阅读
相关推荐
Java面试题总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档