静态内部类的特点:
1 静态内部类的实例不会自动持有外部类的特定实例的引用。在创建内部类的实例时,不必创建外部类的实例。
class A { public static class B { int v; } } public class TestStaticInner { public static void main(String[] args) { A.B b = new A.B(); System.out.println(b.v); } }
2 静态内部类可以直接访问外部类的静态成员,若访问实例成员,就必须通过外部类的实例去访问。
3 在静态内部类中可以定义静态成员和实例成员。
class A { private int a1=12; private static int a2=2; public void test(){} public static class B { //int b1=a1;//不能直接访问外部类的成员变量 int b2=a2; int v; int b3=new A().a1;//实例去访问 static String name="test"; public void test(){} static void methodB() { System.out.println(new A().a1); } public void methodC() { this.test(); new A().test(); } } }
4 客户类可以通过完整的类名直接访问静态内部类的静态成员。但是不能通过完整类名访问静态方法,因为静态方法可能访问外部类的实例实例变量和方法。
System.out.println("直接通过完整类名访问静态成员变量:"+A.B.name);
//System.out.println("直接通过完整类名访问静态成员:"+A.B.methodB());
局部内部类:
局部内部类是在一个方法中定义的,和局部变量一样,局部内部类不能用控制修饰符public private protected 及static修饰符来修饰。特点
1 局部内部类只能在当前方法中使用。
2 局部内部类和实例内部类一样,不能包含静态成员。
3 在局部内部类中定义的类不能加访问修饰符。如public private
class A { // B b =new B();不能访问局部内部类只能在当前方法中使用。 public void mathod() { class B { // static String name; 不能包含静态成员变量 ,再次强调可以包含静态常量 // static class D{}//编译错误 static不能修饰内部类,可以用 abstract 和final修饰 // 但是不能同时使用,局部类也不能加访问修饰符 int v1, v2; class C { int v3; } } B b = new B();// ok System.out.println(b.v1); B.C c = b.new C();// ok } final int localA = 32;// 定义常量 int a; public void m2(final int p1, int p2) { int localV1 = 21; final int localB = 23;// 定义常量 class B { final static int V = 3; // int localV= localV1; int b1 = a; int b2 = p1; // int b3=p2;//不能访问非常量 int b5 = localB; } } }
相关推荐
Java ---- 局部内部类 静态内部类 普通内部类
内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态内部类与普通的成员内部类不同,它不持有对外部类的引用。因此,可以像其他静态成员一样,...
Java语言中的内部类根据定义的位置和访问权限可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类是定义在类的内部且与类的实例相关联的类;局部内部类是定义在方法或作用域内的类;匿名内部...
- 静态内部类可以拥有静态成员和静态方法,但不能直接访问外部类的非静态成员。 - 匿名内部类的使用: - 匿名内部类通常用于简洁地实现一个接口或继承一个类,常用于事件监听器或回调函数的定义。 内部类的应用...
- 不同类型的内部类(静态内部类、成员内部类、局部内部类和匿名内部类)的区别和用法 - 内部类的优缺点以及使用场景 这些目标将帮助你理解和掌握内部类的概念,并能够在适当的时候使用内部类来解决问题...
内部类分为四种类型:成员内部类、局部内部类、匿名内部类和静态嵌套类。其中,静态嵌套类是与外部类关联但不持有对外部类的引用,因此它可以像普通类一样被静态引用,而无需外部类实例。 Java的静态嵌套类通常用于...
本文详细介绍了 Java 中内部类的各种类型及其使用场景,包括静态内部类、非静态内部类、局部内部类以及匿名内部类。每种类型的内部类都有其独特的特性和应用场景,理解这些差异对于更高效地利用 Java 语言特性至关...
内部类可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。在这里,我们重点关注成员内部类和静态内部类。 成员内部类,就像它的名字一样,是类的一个成员,与字段和方法处于同一级别。它可以访问外部...
本篇文章将深入探讨Java中的四种内部类:实例内部类、局部内部类、匿名类和静态内部类,并通过实例代码进行详细解析。 1. **实例内部类**:这是最常见的内部类形式,它在外部类的实例方法或成员位置定义。实例内部...
- **成员内部类**:分为实例内部类和静态内部类。 - **局部内部类**:定义在方法内部的临时类,不作为成员存在。 5. **注意事项**: - 实例内部类不能定义静态成员,因为它们依赖于外部类的实例。 - 静态内部类...
Java内部类主要包括以下几种类型:成员内部类(非静态内部类)、静态内部类(也称为静态嵌套类)、局部内部类和匿名内部类。 - **成员内部类**:这种类型的内部类是定义在外部类的一个成员位置上,它可以访问外部类...
- **局部内部类**:定义在方法、构造器或块中的类称为局部内部类,它的作用域仅限于该方法、构造器或块。 - **匿名类**:没有名字的内部类,通常用于一次性实现某个接口或父类的简单功能。 2. **内部类继承** - ...
不过,需要注意的是,匿名内部类只能继承非final的本地类或者静态嵌套类,因为Java的内存管理机制限制了非静态内部类对它们的外部类有隐含的引用,这可能导致内存泄漏问题。 在课程中,徐培成老师可能会通过示例...
内部类主要分为四种类型:静态内部类、成员内部类、局部内部类和匿名内部类。 1. 静态内部类(Static Inner Class) 静态内部类与普通的类类似,只是它们定义在外部类中,并且前面带有 `static` 关键字。它们不会...
内部类可以分为非静态内部类、局部内部类、静态内部类和匿名内部类四种。 非静态内部类是指定义在另一个类的非静态成员中的类。非静态内部类可以访问外部类的成员变量和成员方法,同时也可以被外部类访问。在外部类...
静态内部类与普通类的行为相似,但能直接访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员,包括实例变量和方法。非静态内部类在创建时会隐式持有对外部类实例的引用,因此需要外部类的实例来实例化...
Java中的内部类主要分为四种:成员内部类、局部内部类、匿名内部类和静态内部类。 成员内部类是最普通的内部类,它是一个普通的类定义在另一个类的内部。成员内部类可以直接访问外部类的属性和方法,即使是private...
- **局部内部类**:定义在方法内部的类,作用域仅限于该方法,无法在方法外部访问。 - **匿名内部类**:没有名字的内部类,通常用于快速实现接口或抽象类的单次实例化需求。 2. **实例内部类的特点** - 实例内部...
2. **局部内部类**: 定义在方法、构造器或块中的类被称为局部内部类。它的作用范围仅限于该方法、构造器或块。 3. **静态内部类**: 声明为static的内部类,称为静态内部类。它不持有对外部类的隐式引用,因此可以...
内部类可以分为四种类型:静态内部类、非静态内部类、局部内部类和匿名内部类。 - **静态内部类**:通过`static`关键字声明,可以直接通过外部类的名称来访问。 - **非静态内部类**:没有`static`关键字,必须通过...