Java SE的学习心得(三)什么情况下会进行类加载?什么叫“可以不处理运行时异常”?父类抛出异常,子类应该注意什么?

摘要:本篇文章讨论了父子类继承中对异常的考虑;对“运行时异常不是必须处理”这句话该怎么理解的讨论;对类加载过程,以及进行类的初始化的几种情况的列举。这些内容是作者在学习过程中产生的问题的总结,希望可以帮到大家,如果能对各位有所启发是最好不过的了!

一、父类若抛出异常,子类应该注意什么?

如果父类的方法声明抛出了某种异常,那么子类重写该方法时遵循以下规则:
1.子类可以不声明抛出任何异常
2.子类可以声明抛出父类方法所声明异常的子类异常
3.子类不能声明抛出比父类方法声明的异常范围更大的异常(即不能声明父类异常的父类异常)

二、什么叫“可以不处理运行时异常”

“可以不处理运行时异常”的含义是编译器不会报红强制要求修改,而是会沿着调用栈向上传播,直到在某个层次被解决或者传播到了main方法处。

三、详解类加载过程,并列举什么情况下会进行类的初始化(一段话搞懂初始化和类加载)!

类的初始化是类加载过程的第三步
(前两步是1.加载(通过类的全限定名获取类的二进制字节流,并将该字节流所代表的静态存储结构转化为方法区的运行时数据结构,同时在堆中生成一个代表这个类的java.lang.class对象,作为方法区这个类的各种数据的访问入口)这一步涉及类加载器和双亲委派模型等概念
2.链接(分为三个步骤:验证、准备、解析))
初始化也是类加载过程的最后一个阶段,在这个阶段,jvm会执行类的初始化代码,包括静态变量的赋值语句和静态代码块。类的初始化是在首次主动使用类时触发的,以下这些情况会触发类的初始化:
1.创建类的实例,如使用new关键字创建对象
2.访问类的静态变量,或者对静态变量进行赋值
3.调用类的静态方法
4.使用反射机制创建类的实例
5.初始化一个类的子类,会先初始化其父类
6.作为程序的入口点,包含main方法的类会被初始化

你可能感兴趣的:(java,开发语言)