Java内部类要设计成静态和非静态两种的原因是:1、内部类与外部类没有强耦合;2、外部类没有实例化时不依赖外部类。内部类与外部类没有强耦合,不需要访问外部类的属性和方法,由于静态内部类和外部类之间不会保存相互的引用,一定程度上可以节约资源。
1、内部类与外部类没有强耦合
内部类与外部类没有强耦合,不需要访问外部类的属性和方法,那么我就可以涉及成静态内部类,由于静态内部类和外部类之间不会保存相互的引用,一定程度上可以节约资源。
首先来看一下静态内部类的特点:如XX用户所述那样,我是静态内部类,只不过是想借你的外壳用一下。本身来说,我和你没有什么“强依赖”上的关系。没有你,我也可以创建实例。那么,在设计内部类的时候我们就可以做出权衡:如果我内部类与你外部类关系不紧密,耦合程度不高,不需要访问外部类的所有属性或方法,那么我就设计成静态内部类。而且,由于静态内部类与外部类并不会保存相互之间的引用,因此在一定程度上,还会节省那么一点内存资源。
2、外部类没有实例化时不依赖外部类
外部类没有实例化时,我的静态内部类还可以实例化,不依赖外部类,而非静态内部类则和外部类同步。既然上面已经说了什么时候应该用静态内部类,那么如果你的需求不符合静态内部类所提供的一切好处,你就应该考虑使用内部类了。最大的特点就是:你在内部类中需要访问有关外部类的所有属性及方法,我知晓你的一切。
延伸阅读:
什么是Java
Java programming language具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的”形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种”以对象为导向”的方式。使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用者和网页之间进行交互式操作。
使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用者和网页之间进行交互式操作。
Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。常用的Java平台基于Java1.8,最近版本为Java19。
文章标题:为什么Java内部类要设计成静态和非静态两种,发布者:小编,转载请注明出处:https://worktile.com/kb/p/36165