代码块&内部类(自用笔记)

文章详细介绍了Java中的静态代码块,它们在类加载过程中的执行时机,以及初始化的条件。同时,讨论了类的初始化如何影响父类的初始化。接着,文章探讨了不同类型的内部类,包括静态内部类、成员内部类、局部内部类和匿名内部类的使用和特性,特别是访问权限和创建对象的方式。最后提到了匿名内部类在重写接口时的多态行为和成员访问规则。

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

代码块

静态代码块:

由static修饰的代码块,随着类加载而执行,并且只执行一次。并且我们在jvm内存结构复习的过程中,我们都清晰的知道jvm的类加载过程

JVM类加载过程

我们很清晰的看到初始化的过程中,才会对静态代码块进行执行。而要达成初始化也有三种情况。

初始化条件​​​

并且要留意的是,子类的初始化,必定会带动父类的初始化

 场景案例:

现在定义两个类,一个是Student类(父类),一个是Teacher类(子类)

场景案例(静态代码块)

代码块:

在创建对象过程后,类里面的代码块才会执行,所以代码块在每一个创建对象的时候都会执行一次。子类代码块的执行必定会带动父类的代码块执行。

场景案例(代码块)

内部类

内部类,指的是在一个类里面在创建一个类,此时整个被创建出来的类就是内部类。

注意:那我们该如何去使用到整个类咧,首先我们需要判断修饰符。

修饰符如果是public是可以被其他的类进行创建对象的。

但是如果是private,那么只能在当前的类里面创建对象使用。

public时:

内部类为公共的

private时:

就会报编译错误,此时就无法进行了,但是真的就无法进行了吗?还记得我们之前学过的反射。

通过反射来获取内部类的信息,以及创建内部类。

 

静态内部类:

当前的内部类是由static去进行修饰的,所以不再需要创建两个对象。

成员内部类:

"成员"。也就是说在方法的外部。在类的内部,也就是上面图。

局部内部类:

也就是在方法的内部,或者在代码块的内部。

局部内部类

 注意:局部内部类是不需要去范围的(public,private),因为他只会在方法内部生效,无法从方法内部调用出来。

局部内部类的方法是可以进行静态修饰以及范围修饰的:

public修饰的是指在方法内部公共使用

private也就是局部内部类私有,不被方法所调用

jdk1.8的不允许静态修饰,但是jdk其他版本暂时不知道。

匿名内部类:

"匿名"也就是没有名字,但是没有名字如何构成一个类咧,那就是通过父类或者接口的名字来充当自己的名字。

本质上是一个没有名字的子类对象、或者接口的实现类对象。

接口

 匿名内部类。

匿名内部类重写接口

 我们会发现我们无法进行调用匿名内部类里面的成员变量?

为什么咧?这里涉及到多态的逻辑。变量?无论是父类调用子类对象还是,接口调用实现类。

都遵循。两个原则:

成员变量,静态方法编译与运行也是看左边。

非静态方法。编译看左边,运行看右边。

所以!此时idea里面无法识别出我们自己定义的成员变量以及非静态的成员方法!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值