Java学习笔记——静态内部类使用及意义

Java学习笔记——静态内部类使用及意义

1、内部类

内部类是定义在另外一个类中的类,主要原因有:

内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据

内部类可以对同一个包的其他类隐藏

2、静态内部类和非静态内部类最大的区别是:

非静态内部类编译后隐式保存着外部类的引用(就算外部类对象没用了也GC不掉),但是静态内部类没有。

3、静态内部类

在 Java 中,静态内部类(Static Inner Class)是定义在另一个类内部的类,并且使用static关键字修饰。它有以下特点:

独立于外部类实例:静态内部类不依赖于外部类的实例而存在,即使外部类没有被实例化,也可以创建静态内部类的对象。这是因为静态内部类和外部类的静态成员一样,都属于类本身,而不是外部类的某个实例。 所以可以直接用

访问权限:静态内部类可以访问外部类的静态成员(包括私有静态成员),但不能直接访问外部类的非静态成员。

创建对象方式:创建静态内部类的对象时,需要使用外部类名.静态内部类名的形式。

静态内部类的应用场景(单例模式的实现)

public class Singleton {

private Singleton() {}

private static class SingletonHolder {

private static final Singleton instance = new Singleton();

}

public static Singleton getInstance() {

return SingletonHolder.instance;

}

}

拼团项目中的静态内部类应用

为什么这里要用静态内部类啊?

可以封装策略执行过程中要使用到的上下文内容

可以避免创建外部类的实例是由static修饰的静态内部类,它不依赖于外部类的实例,即不需要创建外部类实例就可以调用方法是(外部类名.静态内部类名)

这个内部类是工厂类所依赖的一个辅助类,逻辑上归属明确,增强了类结构的内聚性,也便于其他开发者理解其用途。

相关推荐

288点券多少钱
365赌网app官网

288点券多少钱

📅 11-05 👁️ 4328
圣安地列斯电脑版怎么调中文
365需要什么系统

圣安地列斯电脑版怎么调中文

📅 07-29 👁️ 5298
奇偶模分析(Odd Even Mode Analysis)
365需要什么系统

奇偶模分析(Odd Even Mode Analysis)

📅 08-16 👁️ 102