一、嵌套类(Nested Class)分为:内部类(Inner Class)、静态嵌套类(Static Nested Class)
二、写法:
class OutClass{
static class StaticNestedClass{
...
}
class InnerClass{
...
}
}
三、为什么要用嵌套类:
1、当仅希望在某个类中使用一个类时,用嵌套类的写法,就起到封装的作用。
2、提高代码可读性,与可维护性。
四、用例:
public class DataStructure {
private final static int SIZE = 15;
private int[] arrayOfInts = new int[SIZE];
public DataStructure() {
for (int i = 0; i < SIZE; i++) {
arrayOfInts[i] = i;
}
}
public void printEven() {
InnerEvenIterator iterator = new InnerEvenIterator();//外部类中直接调用内部类
while (iterator.hasNext()) {
System.out.println(iterator.getNext() + " ");
}
}
private class InnerEvenIterator {//非静态内部类
private int next = 1;
public boolean hasNext() {
return (next <= SIZE - 1);
}
public int getNext() {
int retValue = arrayOfInts[next];//直接访问外部类变量
next += 2;
return retValue;
}
}
private void outPrivateFunction(){}
private static void staticOutPrivateFunction(){}
private static int i;
static class NestedClass//静态嵌套类
{
NestedClass(){}
int i = 8;
void access()
{
System.out.println(i);//自身变量的访问
System.out.println(DataStructure.i);//外部类变量的访问
DataStructure.staticOutPrivateFunction();//调用外部类静态方法
new DataStructure().outPrivateFunction();
}
}
interface Work //接口也可作为嵌套类,实现匿名嵌套类,参数嵌套类类似
{
public int Money();
}
public static void main(String s[]) {
DataStructure.InnerEvenIterator ie = new DataStructure().new InnerEvenIterator(); //创建非静态内部类实例
DataStructure.NestedClass dn = new DataStructure.NestedClass(); //创建静态嵌套类实例
DataStructure ds = new DataStructure();
ds.printEven();
dn.access();
new Work()
{
public int Money(){ return 2000;};
}.Money();
}
}
发表评论
-
hashtable arraylist 容量
2013-03-01 09:50 902Each ArrayList instance h ... -
报表导出参数
2013-02-27 16:49 1301JRExporterParameter. JASPER_PR ... -
report
2013-02-22 12:08 775http://blog.csdn.net/usedtolov ... -
gwt
2013-02-21 17:02 923Google Web Toolkit的缩写,有了 GWT可以使 ... -
线程安全Collections.synchronizedList
2013-01-23 22:30 46705Collections.synchronizedList引发 ... -
java 一些么曾用的领域
2013-01-23 21:48 816阻塞与非阻塞io 1、nio 1.4 + 2、aio ... -
json 包依赖
2013-01-23 18:02 927commons-beanutils.jar commons ... -
线程池
2013-01-22 22:20 01、Executors类里面提供了一些静态工厂,生成一些常用 ... -
struts2 ext fileUpload
2012-11-23 16:19 0觉得这篇还写的可以,http://www.cnblogs.co ... -
myeclipe jvm setting
2012-11-21 10:23 0原文出处: 由MyEclipse内 ... -
IP转化
2012-07-15 15:56 894IP相互转化 /* * >>>无符 ... -
weblogic下载
2012-04-22 14:07 0weblogic 10.0版本的下载路径: http://w ... -
xml处理
2012-04-07 17:48 0一、此段代码是struts2中struts.xml的解析的部分 ... -
配置文件
2012-04-07 12:32 0以前教材源码的配置文件,很久不用,免的无从下手 一、web. ... -
零碎零碎
2012-02-27 16:30 01、SimpleDateFormat 的使用: Simple ... -
synchronized使用
2011-08-03 23:38 920synchronized关键字的使用: ①是某个对 ... -
Java修饰符
2011-08-03 23:18 962①类修饰符: public 可以从其他类中访问 a ... -
JSP内置对象
2011-07-31 21:37 895以下对JSP内置对象及其方法做一概述 一、reques ... -
设计模式-单例 Singleton
2011-07-31 03:03 762一、构成单例模式要点: ①、只有一个实例 ②、私有的构造方 ... -
JDK_7 Download
2011-07-30 01:11 1408尝尝鲜 哈哈: Linux x86 - RPM Ins ...
相关推荐
非静态嵌套类可以分为三种:在一个类中直接定义的内部类、在一个方法中定义的内部类和匿名内部类。匿名内部类是指没有名字的内部类,通常用于实现某个接口或继承某个类。 四、在外部类中定义内部类 在外部类中定义...
内部类分为四种类型:成员内部类、局部内部类、匿名内部类和静态嵌套类。其中,静态嵌套类是与外部类关联但不持有对外部类的引用,因此它可以像普通类一样被静态引用,而无需外部类实例。 Java的静态嵌套类通常用于...
- 匿名内部类不能包含静态成员(除了final static变量)。 - 匿名内部类不能有构造器,但可以通过初始化块来传递参数。 学习“Java4Android 35_内部类和匿名内部类”这个教程,开发者将掌握如何有效地利用内部类和...
内部类可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。在这里,我们重点关注成员内部类和静态内部类。 成员内部类,就像它的名字一样,是类的一个成员,与字段和方法处于同一级别。它可以访问外部...
本文将详细探讨内部类、匿名内部类以及内部接口的对比和使用。 首先,让我们了解一下内部类的基本概念。内部类定义在其他类的内部,编译后会生成两个独立的类文件。内部类能够自由地访问外部类的所有成员,包括私有...
内部类可以分为四种:成员内部类、静态嵌套类、方法内部类和匿名内部类。每种内部类都有其特点和应用场景。 一、成员内部类 成员内部类是指定义在外部类中的内部类。它们可以访问外部类的所有成员变量和方法,无论...
- 匿名内部类不能是静态的,它总是在使用时被实例化,并且通常用于实现接口或继承一个类。 - 静态内部类则可以独立存在,无需匿名。 **6. 编译后的文件结构** - Java编译器会为静态内部类生成独立的`.class`文件,...
在外部类中定义内部类可以分为成员内部类、静态嵌套类、方法内部类、匿名内部类等几种。内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。内部类可以...
嵌套类在编程中是一种特殊的类定义方式,它允许在一个类的定义内部定义另一个类。这种结构在设计复杂的软件系统时特别有用,因为嵌套类可以封装特定于外部类的信息,提供良好的信息隐藏和模块化。本文将深入探讨嵌套...
匿名内部类是内部类的一种特殊形式,它没有名称,并且在创建时立即实例化。匿名内部类常用于实现接口或继承类的简短场合。 ##### 3.3 局部内部类 局部内部类是在方法或代码块中定义的内部类。这种类型的内部类只能...
Java 中的内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在 C++ 里也有,那就是嵌套类(Nested Class)。内部类从表面上看,就是在类中又定义了一个类,而实际上并没有那么简单。内部类的使用可以让你...
内部类是指未被static修饰的嵌套类,包括成员内部类、局部内部类和匿名内部类。内部类的一个重要特性是它能够捕获外部类的上下文,例如,它可以直接访问外部类的成员变量和方法。内部类不能有静态方法和静态初始化...
内部类可以是成员内部类、局部内部类、匿名内部类和静态内部类。 2. 静态嵌套类(Static Nested Class):静态嵌套类不是外部类的成员,因此不持有对外部类的引用。它们可以通过类名直接访问,就像普通静态成员一样...
内部类可以分为四种:成员内部类、静态嵌套类、方法内部类和匿名内部类。 成员内部类 成员内部类是定义在外部类的成员变量中的一种内部类。它可以访问外部类的所有成员变量和方法,包括私有的变量和方法。成员内部...
* 匿名内部类可以访问外部类的静态成员变量和非静态成员变量。 示例程序: ```java package lxg; public class OuterClass { private static String outer_static_string = "outer_static_string"; private ...
5. **内部类与嵌套类的区别**:内部类分为匿名内部类和非匿名内部类(如成员内部类和局部内部类)。非匿名内部类是具有名称的类,可以访问外部类的成员,包括私有成员。而匿名内部类没有名称,不能直接访问外部类的...
- 匿名内部类:没有名称的内部类,通常用于快速实现简单的接口或抽象类的子类。 内部类的实例总是与外部类的实例关联,也就是说,要创建内部类的实例,必须先有一个外部类的实例。这使得内部类可以用来封装与外部...
Java内部类主要包括以下几种类型:成员内部类(非静态内部类)、静态内部类(也称为静态嵌套类)、局部内部类和匿名内部类。 - **成员内部类**:这种类型的内部类是定义在外部类的一个成员位置上,它可以访问外部类...
- 匿名内部类没有名称,通常用于快速创建一次性使用的简单类,常用于实现接口或继承已有类的情况。 4. **嵌套接口**: - 虽然名为“内部类”,但Java也允许接口嵌套在其他接口或类中,这与类的内部类相似,提供了...
4. **匿名内部类**(Anonymous Inner Class) 这些内部类之间存在一些共性: - **编译后的文件格式**:内部类最终会被编译成独立的`.class`文件,文件名通常为外部类名称加上`$`符号和内部类名称。 - **访问控制**...