【Java】类初始化

类初始化过程

需要类加载并初始化的时机

  1. 一个类要创建一个实例

  2. main方法所在的类

  3. 子类要初始化时,需先加载并初始化父类

类初始化的过程

一个类初始化就是执行<clinit>()方法(cl==>class)

  1. <clinit>()方法由静态变量声明与赋值和静态代码块组成

  2. <clinit>()方法中的静态变量声明与赋值和静态代码块的自由上到下顺序执行

  3. <clinit>()方法只执行一次

实例初始化过程

需要创建实例初始化的时机

实例初始化的过程

执行<init>()方法

  1. 一个类有多少个构造方法就有多少个<init>()方法

  2. init()方法由非静态变量声明与赋值和非静态代码块组成

  3. <init>()方法中的非静态变量声明与赋值和非静态代码块的由上到下顺序执行,而构造方法的内容最后执行

  4. 每次创建实例对象,调用对应的构造器方法,执行的就是对应的<init>()方法

  5. <init>()方法首行执行的是super()或者super(实参),即父类的<init>()方法。写或不写都会存在,并且在子类<init>()方法的第一行

ps:每个<init>()方法中的非静态变量声明与赋值和fangfa非静态代码,父类的<init>()方法都会重复

方法重写

那些方法不能被重写

  1. final方法

  2. 静态方法

  3. private等子类中不可见的方法

对象的多态性

  1. 子类重写了父类的方法,通过子类对象实例调用的一定是子类的方法

  2. 非静态方法默认调用的对象是this

  3. this对象在构造方法(<init>()方法)中是正在创建的对象

 

posted @ 2021-03-27 23:58  程序员徐小白  阅读(152)  评论(0)    收藏  举报