`
hehaibo
  • 浏览: 410209 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java基础--静态内部类和局部内部类

阅读更多

静态内部类的特点:

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;
		}
	}
}

 

分享到:
评论
1 楼 ctguhqh 2011-07-19  
4 客户类可以通过完整的类名直接访问静态内部类的静态成员。但是不能通过完整类名访问静态方法,因为静态方法可能访问外部类的实例实例变量和方法。

这里好像有问题吧,好像可以静态方法也可以访问啊

相关推荐

    Java ---- 局部内部类 静态内部类 普通内部类

    Java ---- 局部内部类 静态内部类 普通内部类

    编程语言-Java语言-关于内部类的分类和认识

    Java语言中的内部类根据定义的位置和访问权限可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类是定义在类的内部且与类的实例相关联的类;局部内部类是定义在方法或作用域内的类;匿名内部...

    java代码笔记2010-06-01:Java内部类 静态内部类 局部内部类 明明内部类;StringBuffer reverse的使用;

    NULL 博文链接:https://jayxigua.iteye.com/blog/686371

    Java的内部类讲解案例代码(成员内部类、局部内部类、匿名内部类、静态内部类、外部类访问四种内部类、其他类访问四种内部类...)

    - 不同类型的内部类(静态内部类、成员内部类、局部内部类和匿名内部类)的区别和用法 - 内部类的优缺点以及使用场景 这些目标将帮助你理解和掌握内部类的概念,并能够在适当的时候使用内部类来解决问题...

    java 内部类 局部内部类 匿名类 实例代码

    java 内部类 实例内部类 局部内部类 匿名类 静态内部类 实例代码

    java接口与内部类教学PPT

    1.接口-简介 2.接口-作用 3.接口-定义方式 4.接口-实现 5.接口-与抽象类之区别 6.接口-应用示例(设计模式...内部类-局部内部类 12.内部类-匿名内部类 13.内部类-静态内部类 14.综述

    java(Day12)---内部类

    静态内部类 定义的位置:类中,方法以外 局部内部类 定义的位置:方法中 匿名内部类 定义的位置:值或实参中 1.2成员内部类 定义位置: 在类中方法以外 语法: 访问权限修饰符 class类名{ } 注意: 成员内部类中不能定义...

    java语言--内部类总结

    1,概述 2,分类 3,使用方法分:A,成员内部类 B,局部内部类 C,静态内部类 D,匿名内部类等,讲解详细,附有相应代码,,,

    JAVA常用类与内部类

    2、静态内部类:定义在类中的类,class 关键字前加入 static 修饰符,创建静态内部类对象不需要外部类对象。 3、局部内部类:定义在方法中的类,作用范围只在当前方法中。 4、匿名内部类:特殊的局部内部类,没有...

    Java 基础核心总结 +经典算法大全.rar

    基础 IO 类和相关方法InputStream OutputStream Reader 类Writer 类 InputStream 及其子类 OutputStream 及其子类Reader 及其子类Writer 及其子类 注解 关于 null 的几种处理方式大小写敏感 null 是任何引用类型的...

    深入理解Java?内部类

    内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类  内部类的共性  (1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。 ...

    java基础(4)代码

    java内部类(普通内部类、局部内部类、静态内部类)和修饰符final用法,详情请看https://blog.csdn.net/qq_40893056/article/details/80488050

    java学习笔记 初学者必读

    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....

    几行代码带你彻底搞懂Java内部类

    内部类基本概述语法格式成员内部类局部内部类匿名内部类静态嵌套类静态嵌套类和非静态嵌套类的区别 内部类 基本概述 当一个类的定义放在另一个类的实体时,则该类叫做内部类,该类所在的类叫做外部类 在一个类体中...

    21天学通Java-由浅入深

    240 12.2.1 创建局部内部类 240 12.2.2 在局部内部类中访问外部类成员变量 240 12.2.3 在局部内部类中访问外部类的局部变量 241 12.2.4 静态方法中的局部内部类 243 12.3 静态内部类 244 12.3.1 创建静态内部类 244 ...

    corejavaNoteBook

    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....

    Java中关于内部类来实现计算机毕业设计

    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课堂测试题

    Java开发技术大全(500个源代码).

    HasStatic.java 一个简单的拥有静态成员的类 hideMember_1.java 成员隐藏示例1 hideMember_2.java 成员隐藏示例2 hideMember_3.java 成员隐藏示例3 hideMember_4.java 成员隐藏示例4 hideMember_5.java 成员...

    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 字符串对象修改...

    C#匿名委托和Java匿名局部内部类使用方法示例

    Java在嵌套类型这里提供的特性比较多,假设:Java的字节码只支持静态嵌套类,内部类、局部内部类和匿名局部内部类都是编译器提供的语法糖,这个假设目前没法验证(看不懂字节码),本文先来看一下C#是如何为我们提供...

Global site tag (gtag.js) - Google Analytics