静态内部类的特点:
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 ---- 局部内部类 静态内部类 普通内部类
Java语言中的内部类根据定义的位置和访问权限可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类是定义在类的内部且与类的实例相关联的类;局部内部类是定义在方法或作用域内的类;匿名内部...
NULL 博文链接:https://jayxigua.iteye.com/blog/686371
- 不同类型的内部类(静态内部类、成员内部类、局部内部类和匿名内部类)的区别和用法 - 内部类的优缺点以及使用场景 这些目标将帮助你理解和掌握内部类的概念,并能够在适当的时候使用内部类来解决问题...
java 内部类 实例内部类 局部内部类 匿名类 静态内部类 实例代码
1.接口-简介 2.接口-作用 3.接口-定义方式 4.接口-实现 5.接口-与抽象类之区别 6.接口-应用示例(设计模式...内部类-局部内部类 12.内部类-匿名内部类 13.内部类-静态内部类 14.综述
静态内部类 定义的位置:类中,方法以外 局部内部类 定义的位置:方法中 匿名内部类 定义的位置:值或实参中 1.2成员内部类 定义位置: 在类中方法以外 语法: 访问权限修饰符 class类名{ } 注意: 成员内部类中不能定义...
1,概述 2,分类 3,使用方法分:A,成员内部类 B,局部内部类 C,静态内部类 D,匿名内部类等,讲解详细,附有相应代码,,,
2、静态内部类:定义在类中的类,class 关键字前加入 static 修饰符,创建静态内部类对象不需要外部类对象。 3、局部内部类:定义在方法中的类,作用范围只在当前方法中。 4、匿名内部类:特殊的局部内部类,没有...
基础 IO 类和相关方法InputStream OutputStream Reader 类Writer 类 InputStream 及其子类 OutputStream 及其子类Reader 及其子类Writer 及其子类 注解 关于 null 的几种处理方式大小写敏感 null 是任何引用类型的...
内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类 内部类的共性 (1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。 ...
java内部类(普通内部类、局部内部类、静态内部类)和修饰符final用法,详情请看https://blog.csdn.net/qq_40893056/article/details/80488050
7.11.4. 静态内部类 7-30 7.11.5. 匿名内部类 7-31 7.12. 集合 7-31 7.12.1. 集合接口类层次 7-32 7.12.2. 集合类层次 7-33 7.12.3. 五个最常用的集合类之间的区别和联系 7-33 7.12.4. 比较 7-35 7.13. 反射 7-37 8....
内部类基本概述语法格式成员内部类局部内部类匿名内部类静态嵌套类静态嵌套类和非静态嵌套类的区别 内部类 基本概述 当一个类的定义放在另一个类的实体时,则该类叫做内部类,该类所在的类叫做外部类 在一个类体中...
240 12.2.1 创建局部内部类 240 12.2.2 在局部内部类中访问外部类成员变量 240 12.2.3 在局部内部类中访问外部类的局部变量 241 12.2.4 静态方法中的局部内部类 243 12.3 静态内部类 244 12.3.1 创建静态内部类 244 ...
7.11.4. 静态内部类 7-30 7.11.5. 匿名内部类 7-31 7.12. 集合 7-31 7.12.1. 集合接口类层次 7-32 7.12.2. 集合类层次 7-33 7.12.3. 五个最常用的集合类之间的区别和联系 7-33 7.12.4. 比较 7-35 7.13. 反射 7-37 8....
10.9内部类 10.9.1基本介绍 ...10.9.5局部内部类的使用 10.9.6匿名内部类的使用(重点) 10.9.7匿名内部类的最佳实践 10.9.8匿名内部类课堂练习 10.9.9成员内部类的使用 10.9.10静态内部类的使用 10.9.11课堂测试题
HasStatic.java 一个简单的拥有静态成员的类 hideMember_1.java 成员隐藏示例1 hideMember_2.java 成员隐藏示例2 hideMember_3.java 成员隐藏示例3 hideMember_4.java 成员隐藏示例4 hideMember_5.java 成员...
8.1.2 局部内部类206 8.1.3 静态内部类209 8.1.4 匿名内部类211 8.2 对象包装器213 8.3 装箱和拆箱216 8.4 本章习题218 第9章 9.1 String类220 9.1.1 字符串常量221 9.1.2 字符串对象操作224 9.1.3 字符串对象修改...
Java在嵌套类型这里提供的特性比较多,假设:Java的字节码只支持静态嵌套类,内部类、局部内部类和匿名局部内部类都是编译器提供的语法糖,这个假设目前没法验证(看不懂字节码),本文先来看一下C#是如何为我们提供...