`

内部类:静态内部类

 
阅读更多
package org.lgy.study.innerclass;

/*
静态内部类属于外部类本身,而不属于外部类的对象。
使用静态内部类时无需创建外部类的对象。
*/
public class StaticInnerClass{
	private String str1 = "non static str1 in outer";
	private static String str2 = "static str2 in outer";
	
	public void method1(){
		System.out.println("non static method1 in outer");
		//外部类的实例方法可以访问静态内部类的任何成员,无论该成员是静态成员还是非静态成员。
		//即使是内部类的私有属性,也可以在外部类中直接访问;但必须使用类名作为调用者来访问其类成员,
		//必须使用静态内部类对象作为调用者来访问其实例成员。
		InnerClass in = new InnerClass();
		System.out.println("in.str1 = " + in.str1);
		System.out.println("InnerClass.str2 = " + InnerClass.str2);
		in.method1();
		InnerClass.method2();
	}
	
	public static void method2(){
		System.out.println("static method2 in outer");
		//外部类的类方法可以访问静态内部类的任何成员,无论该成员是静态成员还是非静态成员。
		//即使是内部类的私有属性,也可以在外部类中直接访问;但必须使用类名作为调用者来访问其类成员,
		//必须使用静态内部类对象作为调用者来访问其实例成员。
		InnerClass in = new InnerClass();
		System.out.println("in.str1 = " + in.str1);
		System.out.println("InnerClass.str2 = " + InnerClass.str2);
		in.method1();
		InnerClass.method2();
	}
	
	public void method3(){
		System.out.println("non static method3 in outer");
	}
	
	public static void method4(){
		System.out.println("static method4 in outer");
	}
	
	/*
	静态内部类不能访问外部类的实例成员,只能访问外部类的类成员。
	即使是静态内部类的实例方法也不能访问外部类的实例成员,只能访问外部类的静态成员。
	*/
	private static class InnerClass{
		//静态内部类里可以定义任何成员(成员变量、成员方法、静态成员、非静态成员)
		private String str1 = "non static str1 in inner";
		private static String str2 = "static str2 in inner";
		
		public void method1(){
			System.out.println("non static method1 in inner");
			//静态内部类的实例方法也不能访问外部类的实例成员变量
			//System.out.println("str1 in outer: " + StaticInnerClass.this.str1);
			System.out.println("str2 in outer: " + str2);
			//静态内部类的实例方法也不能访问外部类的实例成员方法
			//method3();
			method4();
		}
		
		public static void method2(){
			System.out.println("static method2 in inner");
			//静态内部类的静态方法也不能访问外部类的实例成员变量
			//System.out.println("str1 in outer: " + StaticInnerClass.this.str1);
			System.out.println("str2 in outer: " + str2);
			//静态内部类的静态方法也不能访问外部类的实例成员变量
			//method3();
			method4();
		}
	}
}

 

分享到:
评论

相关推荐

    java内部类总结(含概念和实例)

    3. 静态内部类:静态内部类是指在外部类的静态成员中定义的内部类。 4. 匿名内部类:匿名内部类是指没有名字的内部类,通常用在创建实例时使用。 为什么需要内部类? 内部类提供了某种进入其外围类的窗口。使用...

    关于内部类的整理 内部类.xmind

    静态内部类与成员内部类类似,但可以在没有外部类实例的情况下创建。由于它们不持有对外部类的引用,所以它们可以访问外部类的静态成员。 5. 接口的内部类: Java允许在接口内部定义类,这样的类必须是静态的,...

    java 内部类应用

    3. 静态内部类:静态内部类不持有对外部类的引用,因此它可以像普通类一样实例化,无需外部类的对象。静态内部类可以声明为静态成员,且可以有自己的静态变量和静态方法。 4. 匿名内部类:没有名字的内部类,通常...

    java中的内部类

    4. 静态内部类:静态内部类与普通成员内部类的区别在于,静态内部类可以不依赖于外部类的实例就能创建对象。它们不持有对外部类的引用,所以可以声明静态成员。此外,静态内部类可以被其他类直接引用,而无需先创建...

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

    内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态内部类与普通的成员内部类不同,它不持有对外部类的引用。因此,可以像其他静态成员一样,...

    浅谈内部类与静态内部类的应用

    内部类可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。在这里,我们重点关注成员内部类和静态内部类。 成员内部类,就像它的名字一样,是类的一个成员,与字段和方法处于同一级别。它可以访问外部...

    内部类代码

    4. 静态内部类:静态内部类与普通成员内部类相似,但可以通过外部类直接实例化,不依赖外部类的对象。它们不能直接访问外部类的非静态成员,但可以通过实例化外部类对象来访问。 二、内部类的用途 1. 数据封装:...

    Java内部类总结.pdf

    内部类分为四种主要类型:成员内部类、局部内部类、静态内部类和匿名内部类。每种类型的内部类都有其特定的使用场景和优势。 1. 成员内部类: 成员内部类作为外部类的成员,与外部类的字段和方法并列存在。成员...

    静态内部类

    ### 静态内部类详解 #### 一、静态内部类概述 静态内部类(Static Inner Class)是在Java中一种特殊的内部类实现形式。在Java编程语言中,内部类允许在一个类的内部定义另一个类。根据内部类是否声明为static,...

    java 几种内部类(基础)(csdn)————程序.pdf

    内部类分为四种主要类型:成员内部类、静态内部类、局部内部类和匿名内部类。 1. 成员内部类: 成员内部类就像是外部类的一个成员,它可以访问外部类的所有成员,包括私有成员。例如,在`Outer`类中定义的`Inner`...

    java(Day12)---内部类

    内部类主要有四种类型:成员内部类、静态内部类、局部内部类和匿名内部类。 1. 成员内部类: 成员内部类可以直接访问外部类的所有成员,包括实例变量和方法。它定义的位置是在类中,但不在任何方法之内。成员内部...

    java基础java内部类

    然而,静态内部类不能直接访问外围类的非静态成员,需要通过new 外部类().成员的方式访问。如果与外部类的静态成员同名,可以通过类名.静态成员来区分。创建静态内部类的对象时,可以直接使用:内部类 对象名 = new ...

    【IT十八掌徐培成】Java基础第05天-02.final-内部类.zip

    内部类在Java中扮演着多种角色,包括匿名内部类、成员内部类、局部内部类以及静态内部类等,它们提供了更灵活的封装和抽象能力。 首先,我们来理解什么是内部类。内部类是定义在一个外部类(也称为包含类)内部的类...

    java静态内部类(嵌套类)

    ### Java静态内部类(嵌套类)详解 #### 一、静态内部类概念与特性 在Java编程语言中,静态内部类(也被称为嵌套类)是一种特殊的内部类形式,它通过`static`关键字来定义。与普通内部类相比,静态内部类具有以下...

    java中内部类的分类及用法.pdf

    4. 静态内部类:静态内部类不持有对外部类的引用,因此可以独立创建对象,不需要外部类的实例。它类似于普通的顶级类,但依然保留在外部类的命名空间内。 内部类的访问控制与外部类类似,可以有public、protected、...

    java 静态内部类的使用规范

    Java语言中的静态内部类,也称为嵌套类,是内部类的一种特殊形式,它与非静态内部类(也称为成员内部类)相比有着独特的特点和使用场景。在深入探讨其使用规范之前,我们先理解静态内部类的基本概念。 静态内部类不...

    java 利用反射获取内部类静态成员变量的值操作.docx

    ### Java 利用反射获取内部类静态成员变量的值操作 #### 一、引言 在Java编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用...

    java和kotlin的内部类静态嵌套类

    内部类分为四种类型:成员内部类、局部内部类、匿名内部类和静态嵌套类。其中,静态嵌套类是与外部类关联但不持有对外部类的引用,因此它可以像普通类一样被静态引用,而无需外部类实例。 Java的静态嵌套类通常用于...

    java内部类、异常、编程规范[文].pdf

    内部类分为几种类型,包括成员内部类、局部内部类、匿名内部类以及静态内部类。 1. 成员内部类(Outer.java示例): 成员内部类如同其他成员变量一样,可以在类的任何地方定义,可以访问外部类的所有成员,包括...

    Java程序的参数传递及项目打包成JAR文件(以内部类为例)

    有两种类型的内部类:静态内部类和非静态(成员)内部类。在例子中,`Teacher`是一个静态内部类,可以直接通过`School.Teacher`创建对象,而无需先创建外部类`School`的实例。非静态内部类(如`Student`)需要外部类...

Global site tag (gtag.js) - Google Analytics