`
李灵晖-raylee
  • 浏览: 135710 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

从头认识java-8.9 嵌套类(使用static的内部类)

 
阅读更多

这一章节我们来讨论一下嵌套类。

1.概念

内部类使用static的时候就是嵌套类。

package com.ray.ch07;

public class Test {
	private static class MyTest3{}
	
}

MyTest3就是嵌套类


2.注意点

(1)只能跟外部类的static部分进行通信

(2)不在持有外部类对象的引用,可以直接使用static特性

package com.ray.ch07;

public class Test {
	private int id = 1;
	private static String name = "aaa";

	private static class MyTest1 {
		public void say() {
			// System.out.println(id);//error
			System.out.println(name);
		}
	}

	private class MyTest2 {
		public void say() {
			System.out.println(id);
			System.out.println(name);
		}
	}

	public static void main(String[] args) {
		// new Test().new MyTest1();//error.
		new Test.MyTest1().say();
		new Test().new MyTest2();
	}
}

从上面的代码可以看见,MyTest1是不能够访问id,而MyTest2可以。

还有,在new的时候,我们可以看见,MyTest1具备了static的特性,不需要new,但是还是需要多加一个括号,而MyTest2则需要new才能调用里面的方法。


(3)嵌套类没有this这引用

因为嵌套类使用了static,因此不能使用this来引用外部类。


(4)使用场景

一个比较常见的使用场景就是跟main函数结合。

因为在发布项目的时候通过只是发布有用的代码,像测试等代码都不发布的,那么现在这个就比较有用了。

我们来对比一下下面的这两组代码:

package com.ray.ch08;

public class Test {
	
	public static void main(String[] args) {
		
	}

}


package com.ray.ch08;

public class Test {
	private void say() {
		System.out.println("abc");
	}

	public static class Tester {
		public static void main(String[] args) {
			Test test = new Test();
			test.say();
		}
	}

}


上面两组代码的功能是一样的,但是生成的文件却有区别。

第一个代码只会生成一个Test.class

但是第二个会生成两个文件Test.class和Test$Tester.class,我们只需要在发布到时候把第二个文件删除,那么这些测试的代码就删掉了,这样比较方便。


总结:这一章节讨论了嵌套类的概念以及注意点。


这一章节就到这里,谢谢。

-----------------------------------

目录



分享到:
评论

相关推荐

    mchange-commons-java-0.2.11.zip

    在Java开发中,这样的库可以极大地提高开发效率,因为它封装了常见的功能,开发者可以直接使用,而无需从头编写代码。 描述中的 "mchange-commons-java-0.2.11.jar包" 是该库的主要组成部分,是一个Java归档(JAR)...

    eclipse-java-2021-12-R-win32-x86_64.zip

    Eclipse IDE for Java Developers 是一款广泛使用的集成开发环境(IDE),专为Java编程设计。它由Eclipse基金会维护,提供了一整套工具,用于编写、调试、测试和部署Java应用程序。2021-12-R 版本是Eclipse的一个...

    api-ntrip-java-client-master.zip_android_ntrip_ntrip java实现_ntr

    - **Android Socket编程**:使用Java的Socket类建立与NTRIP服务器的连接,收发数据。 - **JSON或XML解析**:NTRIP数据可能以这两种格式传输,需要解析成Java对象。 - **Android权限管理**:可能需要获取网络访问权限...

    aip-java-sdk-4.2.0

    2. **aip-java-sdk-4.2.0.jar**:这是核心的AIP Java SDK库文件,包含了所有用于与百度AI平台交互的类和方法。开发者需要引入这个jar文件到他们的Android项目中,才能使用SDK提供的功能。 3. **json-20160810.jar**...

    ffmpeg-4.1.3-win64-static.7z

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。...它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

    aspose-words-java-23.6-jdk17.jar.zip

    【标题】"Aspose.Words for Java 23.6 with JDK 17 Support" Aspose.Words 是一个强大的文档处理库,专为Java开发者设计,用于创建、操作和转换各种文档格式。版本23.6是这个库的一个重要更新,它引入了对Java ...

    java-Swing外观包

    在"Swing外观包.jar"这个文件中,可能包含了一些预设的LookAndFeel实现或者定制的LookAndFeel类,以便开发者可以直接导入并应用于他们的项目中,无需从头开始编写。这大大简化了创建独特界面的过程,使得开发者可以...

    手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip

    1. **Java编程语言**:微服务通常使用Java作为主要开发语言,因为Java具有跨平台性、稳定性和强大的库支持。 2. **Spring Boot**:许多微服务框架如Spring Boot依赖于Java,Spring Boot简化了创建独立的、生产级别的...

    JAVA编程高级-工具类.pdf

    `Object`类是所有Java类的基类,也就是说所有的类都直接或间接地继承自`Object`。因此,`Object`类中定义的方法可以在所有类中使用。 - **Object类常用方法** - `public boolean equals(Object obj)`:比较两个...

    使用渲染脚本实现模糊视图背景 - Java - 下载.zip

    使用这个库,开发者可以避免从头实现模糊算法,而是直接调用库中的函数,减少工作量,提高效率。在实际应用中,这种模糊视图背景常用于对话框、弹出窗口或者浮动视图,以提供更好的视觉层次感和用户体验。 总结来说...

    ffmpeg-4.2.2-win64-static.rar(找不到64位ffmpeg.exe的小朋友往这里看)

    它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。 ffprobe 查看媒体文件头信息的工具 ffplay 以 FFmpeg 框架为基础,外加渲染音视频库 ...

    Java---笔试题大全

    Java是一种广泛使用的面向对象的编程语言,其特点包括抽象、继承、封装和多态性。在Java笔试中,这些概念经常被考察。 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化的过程,分为过程抽象(方法)和...

    java-多文件上传dome

    在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。

    ffmpeg-latest-win64-static.zip

    它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。 FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、...

    Free Spire.Doc for Java - 3.9 无水印

    在Java项目中,首先需要将`lib`目录下的`Spire.Doc.jar`库文件引入到类路径中。然后,可以通过以下基本步骤开始使用: 1. 创建`Document`对象,加载或新建Word文档。 2. 使用各种API添加或修改文档内容。 3. 调用`...

    _Java-集合容器-2.List及其实现类.ppt

    在Java编程中,集合容器是数据管理的重要组成部分,它们提供了灵活且高效的方式来存储和操作对象。List接口是Java集合框架中的核心接口之一,它继承自Collection接口,并具有特定的特性:元素可以重复,保持元素的...

    java-lib

    在Java编程中,库(Library)是预先编写好的代码集合,程序员可以导入并直接使用,无需从头开始编写所有功能。这些库通常以JAR(Java Archive)文件的形式存在,里面封装了类和方法,可供应用程序调用。Java库广泛...

    java-sdk-master.zip_leancound集成第三方插件_即时通讯

    Java SDK是许多软件开发中的重要组成部分,特别是在与服务器端交互时...通过学习和使用这个SDK,开发者可以迅速在自己的应用中实现稳定、可靠的即时通信功能,而无需从头构建整个通讯系统,大大节省了开发时间和资源。

    ffmpeg-20180718-1809f1c-win64-static

    它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。 由此看来FFmpeg很强大,很多主流的音频、视频处理软件都使用了FFmpeg。 FFmpeg下载下来...

Global site tag (gtag.js) - Google Analytics