类的高级概念(二)

本文详细介绍了Java中的静态初始化块与实例初始化块的区别,包括它们的执行时机及作用,以及四种内部类(静态内部类、成员内部类、局部内部类、匿名内部类)的特点和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态初始化块

由static关键字定义的,在类加载时就加载的语句块,当类在加载上时会将静态初始化块一同加载
结构:	static{//语句}
注意:当类在加载上时会将静态初始化块一同加载,当实例化多个对象时,静态初始化块只被加载一次,类的静态初始化块也只被运行一次。

实例初始化块

实例初始化块与静态初始化块类似,它在类的对象每次实例化时执行一次。实例初始化块和构造器二者之间的不同之处在于实例初始化块在构造器调用之前执行。
实例初始化块的语法形式很简单,只需要在类中用大括号括起代码块即可。注意,实例初始化块不使用任何关键字,也没有名称。
实例初始化块中的语句在任何父类构造器调用之后,在子类构造器调用之前执行。当对象被实例化,并且类包含有实例初始化块时,下面的事件按顺序发生:
1、子类中相应的构造器被调用。
2、执行对super的调用,控制流程跳转到相应的父类构造器。
3、父类构造器执行完,控制流程跳转回子类构造器。
4、在该子类构造器中的super()后面的任何语句执行前,实例初始化块执行。
5、最后,执行子类构造器中super()后面的语句。

内部类

在一个类中定义一个类,类的内部定义的类称为内部类内部类所在的类称为外部类
Java中的内部类可以分为四种,分别是:静态内部类、成员内部类、局部内部类、匿名内部类。
1、静态内部类
静态内部类是外部类的成员,但是在未创建外部类的对象的情况下,可以直接创建静态内部类的对象。此外,静态内部类可以引用外部类的静态成员变量和静态方法,但是不能引用外部类的普通成员。如果在静态内部类中引用外部类的普通成员,就会出现编译错误。	
2、成员内部类
与静态内部类不同的是,内部类定义时没有static修饰符,同时,只有创建了外部类的实例对象后,才能使用内部类的对象。成员内部类可以调用外部类的所有成员。但是只有创建了外部类的对象后,才能引用外部的成员。
3、局部内部类
局部内部类是在类的方法内部定义的类。局部内部类只能在方法内部中使用。一旦方法执行完毕,局部内部类就会从内存中被清除。注意:如果局部内部类中要使用它所在的方法中的局部变量,那么就需要将这个局部变量定义为final的。
4、匿名内部类
匿名内部类是一种特殊的内部类,这种类没有名字。匿名内部类的定义与对象的创建合并在一起,整个动作看起来像产生对象似的。匿名内部类是为唯一对象而定义的类。当我们只需要创建一个类的对象,而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚。
结构:
new 类或者接口的名字() {
  //匿名内部类的主体
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值