内部类就是在一个类的内部定义的类,内部类中不能定义静态成员(静态成员不是对象的特性,只是为了找一个容身之处,所以需要放到一个类中而已,这么一点小事,你还要把它放到类内部的一个类中,过分了啊!提供内部类,不是为让你干这种事情,无聊,不让你干。我想可能是既然静态成员类似c语言的全局变量,而内部类通常是用于创建内部对象用的,所以,把“全局变量”放在内部类中就是毫无意义的事情,既然是毫无意义的事情,就应该被禁止),内部类可以直接访问外部类中的成员变量,内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中,如下所示:
package test;
/**
*
* Outer概要说明
* 测试内部类
*
* @author ycglei886
* @cjsj:2010/09/12
*
*/
public class Outer {
int $out = 0;
public void method() {
Outer outer = new Outer();
Outer.Inner1 inner1 = outer.new Inner1();
inner1.syso();
final class Inner2 { // 在方法体内部定义的内部类,可以使用final或abstract修饰符
final int $outer = 3; // 该局部变量前加final修饰符
public void method() {
$out = 4;
}
}
Inner2 inner2 = new Inner2();
inner2.method();
System.out.println(inner2.$outer);
}
public class Inner1 { // 在方法体外面定义的内部类
private void syso() {
final int $sys = 9;
System.out.println("Test Class!!");
System.out.println($sys);
}
}
public static void main(String[] args) {
Outer outer = new Outer();
System.out.println(outer.$out);
outer.method();
Outer.Inner1 inner1 = outer.new Inner1();
inner1.syso();
}
}
在方法体外面定义的内部类的访问类型可以是public,protecte,默认的,private等4种类型,这就好像类中定义的成员变量有4种访问类型一样,它们决定这个内部类的定义对其他类是否可见;对于这种情况,我们也可以在外面创建内部类的实例对象,创建内部类的实例对象时,一定要先创建外部类的实例对象,然后用这个外部类的实例对象去创建内部类的实例对象,代码如下:
Outer outer = new Outer();
Outer.Inner1 inner1 = outer.new Inner1();
在方法内部定义的内部类前面不能有访问类型修饰符,就好像方法中定义的局部变量一样,但这种内部类的前面可以使用final或abstract修饰符。
这种内部类对其他类是不可见的其他类无法引用这种内部类,但是这种内部类创建的实例对象可以传递给其他类访问。这种内部类必须是先定义,后使用,即内部类的定义代码必须出现在使用该类之前,这与方法中的局部变量必须先定义后使用的道理也是一样的。这种内部类可以访问方法体中的局部变量,但是,该局部变量前必须加final修饰符。
分享到:
相关推荐
#### 一、什么是内部类? 内部类,顾名思义,是在另一个类的内部定义的类。这种独特的结构让内部类能够访问包含它的外部类的私有成员,包括变量和方法。这为编程提供了一种封装更紧密、功能更灵活的设计模式。内部...
什么是内部类? 在类中定义的类,称之为内部类。 Java中有几种内部类? 1、成员内部类:定义在类中的类,属于类的成员,创建成员内部类对象必须依赖外部类对象。 2、静态内部类:定义在类中的类,class 关键字前...
什么是内部类?内部类的作用 抽象类和接口的区别 抽象类的意义 抽象类与接口的应用场景 抽象类是否可以没有方法和属性? 接口的意义 泛型中的extends和super的区别 父类的静态方法能否被子类重写? 进程和线程的区别...
什么是内部类? 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)...
为什么需要内部类? 内部类提供了某种进入其外围类的窗口。使用内部类最吸引人的原因是,每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。...
在使用匿名内部类时,要记住以下几个原则:匿名内部类不能有构造方法、匿名内部类不能是public、protected、private、static、只能创建匿名内部类的一个实例、匿名内部类不能定义任何静态成员、静态方法、一个匿名...
在Java编程语言中,内部类和匿名内部类是两种特殊类型的类,它们为代码的组织和功能实现提供了独特的灵活性。本教程"Java4Android 35_内部类和匿名内部类"深入探讨了这两个概念,旨在帮助开发者更好地理解和运用它们...
内部类是Java编程语言中的一种特性,它允许我们在一个类的内部定义另一个类。这种设计模式在Android开发中尤其常见,因为它可以有效地管理代码和实现特定的功能。本文将详细探讨内部类、匿名内部类以及内部接口的...
内部类分为几种类型,包括成员内部类、局部内部类、匿名内部类以及方法参数内部类。 1. **成员内部类**:成员内部类就像是外部类的一个普通成员,可以是静态或非静态的。非静态内部类拥有对外部类的引用,可以直接...
26、什么是内部类?Static Nested Class 和 Inner Class的不同。 19 27、内部类可以引用它的包含类的成员吗?有没有什么限制? 20 28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以...
三、为什么需要内部类? 1. 内部类方法可以访问该类定义所在的作用域的数据,包括私有的数据。 2. 内部类可以对同一个包中的其他类隐藏起来, 一般的非内部类,是不允许有 private 与 protected 权限的,但内部类...
26、什么是内部类?Static Nested Class 和 Inner Class的不同。 20 27、内部类可以引用它的包含类的成员吗?有没有什么限制? 22 28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以...
24. 什么是内部类?Static Nested Class和Inner Class的不同。 答:内部类是定义在另一个类中的类,Static Nested Class是静态内部类,Inner Class是非静态内部类。 25.内部类可以引用它的包含类的成员吗?有没有...
26. 什么是内部类?Static Nested Class 和 Inner Class 的不同。 答案:内部类是定义在类中的类,Static Nested Class 是静态内部类,Inner Class 是非静态内部类。 二十七、内部类应用 27. 内部类能够引用它的...
内部类可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。在这里,我们重点关注成员内部类和静态内部类。 成员内部类,就像它的名字一样,是类的一个成员,与字段和方法处于同一级别。它可以访问外部...
本篇文章将深入探讨Java中的四种内部类:实例内部类、局部内部类、匿名类和静态内部类,并通过实例代码进行详细解析。 1. **实例内部类**:这是最常见的内部类形式,它在外部类的实例方法或成员位置定义。实例内部...
内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态内部类与普通的成员内部类不同,它不持有对外部类的引用。因此,可以像其他静态成员一样,...
7. **为什么需要内部类** - 内部类的主要用途包括: - 提供更强的封装性,可以隐藏实现细节。 - 定义事件处理器,如Swing中的匿名内部类。 - 实现特定的逻辑关联,使得代码结构更清晰。 - 创建闭包,实现函数式...
根据不同的应用场景和特性,内部类可以分为多种类型:成员内部类、局部内部类、静态内部类、匿名内部类。下面将详细介绍每种类型的内部类及其特点和使用方法。 #### 成员内部类 成员内部类(也称为非静态内部类)...