博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 内部类
阅读量:6273 次
发布时间:2019-06-22

本文共 1499 字,大约阅读时间需要 4 分钟。

hot3.png

Java 内部类

在Java中,类是一个非常基本的概念,它贯穿了整个Java体系。在实际开发中,我们会经常创建不同的类。今天我们将来了解一下Java内部类

成员内部类

这种内部类是最常见的,如:

public class Main {	public static void main(String[] args) {		new Main().new Inner().println();	}	class Inner {		private void println() {			System.out.println("AAA");		}	}}

可以发现Inner就是一个简单的内部类,值得注意的是它的初始化,需要优先初始化Main对象。

匿名类

在Java中,特别是Android编程或者SWT编程,我们经常使用匿名类:

public class Main {	interface Callback{		void ok();	}	public static void main(String[] args) {		Callback callback = new Callback() {			//构造代码区域			{				System.out.println("Build");			}			@Override			public void ok() {				System.out.println("OK");			}		};		callback.ok();	}}

通过匿名类,我们可以构造一个回调,而不用编写一个具体的类,好处就是内聚性强,不会出现莫名其妙的类被全局可见。而缺点就是缺少了构造函数。当然我们可以通过一定的手段来伪造一个构造函数,如 {} 代码块

局部内部类

在函数中,我们也可以创建一个类:

public class Main {	public static void main(String[] args) {		class Inner {			private void println() {				System.out.println("AAA");			}		}		new Inner().println();	}}

是不是感觉非常的不可思议,其实这种方式和我们经常使用的匿名类其实是一个道理,仅仅是多了构造方法和类名。因为该类的作用域为函数块,所以能避免污染全局空间。

静态内部类

在Java中,还有一种类,它们被称为静态内部类:

public class Main {	public static void main(String[] args) {		new StaticClass().println();	}	static class StaticClass {		public void println() {			System.out.println("Static Class");		}	}}

可以发现,静态内部类和成员内部类非常的类似,唯一的区别就是添加了static关键字。通过声明static关键字,使得该类能被独立的实例化,而不需要依赖Main。

值得注意的是,Java文件中顶级类:

public class Main {	public static void main(String[] args) {		System.out.println("Main");	}}class TopCls{	}

如Main和TopCls其实都是默认的静态类。

转载于:https://my.oschina.net/darkgem/blog/636707

你可能感兴趣的文章
ItelliJ IDEA开发工具使用—创建一个web项目
查看>>
學習 React.js:用 Node 和 React.js 創建一個實時的 Twitter 流
查看>>
solr-4.10.4部署到tomcat6
查看>>
切片键(Shard Keys)
查看>>
淘宝API-类目
查看>>
virtualbox 笔记
查看>>
Git 常用命令
查看>>
驰骋工作流引擎三种项目集成开发模式
查看>>
SUSE11修改主机名方法
查看>>
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
C++零基础教程(一)——何谓编程
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>