`

内部类:使用内部类

 
阅读更多

一、在外部类内部使用内部类

对于非静态内部类,不能在外部类的静态成员(静态方法、静态初始化块)中使用。

对于静态内部类,可以在任何成员(静态方法、实例方法、静态初始化块、普通初始化块)中使用。

 

二、在外部类以外使用非静态内部类

如果希望在外部类以外的地方访问内部类,则内部类不能使用private访问权限控制,private修饰的内部类只能在外部类内部使用。对于使用其他访问控制符修饰的内部类,则能在访问控制符对应的访问权限内使用。

package org.lgy.study.innerclass;

public class Out{
	
	/*
	如果希望在外部类以外的地方访问内部类(包括静态和非静态),则内部类不能使用private访问权限控制,
	private修饰的内部类只能在外部类内部使用。
	对于使用其他访问控制符修饰的内部类,则能在访问控制符对应的访问权限内使用。
	*/
	public class In{
		public In(String msg){
			System.out.println(msg);
		}
		
		public void method1(){
			System.out.println("********");
		}
	}
}

 

package org.lgy.study.main;

import org.lgy.study.innerclass.Out;

public class InnerClassMain{
	public static void main(String[] args){
		//在外部类以外的地方定义内部类变量的语法格式为:OuterClass.InnerClass varName;
		Out.In in = null;
		//因为非静态内部类的对象必须寄存在外部类的对象里,因此创建非静态内部类对象之前,
		//必须先创建其外部类对象。并且必须使用外部类对象来调用内部类的构造器。
		//下面一行代码将创建一个外部类对象,之后创建的内部类对象将寄存在该外部类对象中
		Out out = new Out();
		//用过外部类实例和new来调用内部类构造器创建非静态内部类实例
		in = out.new In("create inner class Out.In");
		in.method1();
		
		Out.In in1 = new Out().new In("create another inner class Out.In");
		in1.method1();
	}
}

 

三、在外部类以外使用静态内部类

package org.lgy.study.innerclass;

public class StaticOut{
	
	/*
	如果希望在外部类以外的地方访问内部类(包括静态和非静态),则内部类不能使用private访问权限控制,
	private修饰的内部类只能在外部类内部使用。
	对于使用其他访问控制符修饰的内部类,则能在访问控制符对应的访问权限内使用。
	*/
	public static class StaticIn{
	
		public StaticIn(String msg){
			System.out.println(msg);
		}
		
		public void method1(){
			System.out.println("*******");
		}
	}
}

 

package org.lgy.study.main;

import org.lgy.study.innerclass.StaticOut;

public class InnerClassMain{
	public static void main(String[] args){
		//在外部类以外的地方定义内部类变量的语法格式为:OuterClass.InnerClass varName;
		StaticOut.StaticIn in = null;
		//因为静态内部类属于外部类,所以创建内部类对象时必须使用外部类来调用构造器
		in = new StaticOut.StaticIn("create inner class StaticOut.StaticIn");
		in.method1();
		
		StaticOut.StaticIn in2 = new StaticOut.StaticIn("create another inner class StaticOut.StaticIn");
		in2.method1();
	}
}

 

分享到:
评论

相关推荐

    java 内部类使用(内部匿名类)

    Java内部类是Java语言提供的一种独特机制,它允许在一个类的内部定义另一个类。这种设计模式使得代码结构更紧凑,可以更好地封装和隐藏...理解并熟练掌握内部类的使用,能够帮助开发者编写更加灵活、高效的Java代码。

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

    4. 匿名内部类:匿名内部类是指没有名字的内部类,通常用在创建实例时使用。 为什么需要内部类? 内部类提供了某种进入其外围类的窗口。使用内部类最吸引人的原因是,每个内部类都能独立地继承自一个(接口的)...

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

    当只需要一次性使用一个类,并且这个类只需要实现一两个方法时,匿名内部类是一个很好的选择。它可以用于事件监听、回调函数等场景。 5. **StringBuffer reverse的使用**: `StringBuffer` 是线程安全的字符串操作...

    内部类的使用

    本文将深入探讨内部类的使用,包括其分类、特点以及如何与外部类进行交互。同时,我们还将触及Java中的Stream API,这是一种现代化的数据处理方式,特别适用于集合操作。 首先,内部类分为四种类型:成员内部类、...

    编程选择题40道:枚举与内部类:高级特性与应用场景.Tex.docx

    编程选择题40道:枚举与内部类:高级特性与应用场景.Tex.docx

    java 静态内部类的使用规范

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

    Java内部类:你真得了解方法内部类吗?

    文章目录Java内部类:你真得了解方法内部类吗?普通内部类方法内部类匿名内部类静态内部类参考Thinking in Java Java内部类:你真得了解方法内部类吗? java内部类,相信很多人都使用过内部类,新建线程使用的匿名...

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

    1. 成员内部类: 成员内部类是定义在一个类的成员位置的类,它就像是类的一个普通成员变量或方法。成员内部类可以直接访问外部类的所有成员,包括私有成员,因为它们之间有隐式的引用关系。 2. 局部内部类: 局部...

    内部类分类及应用

    在使用匿名内部类时,要记住以下几个原则:匿名内部类不能有构造方法、匿名内部类不能是public、protected、private、static、只能创建匿名内部类的一个实例、匿名内部类不能定义任何静态成员、静态方法、一个匿名...

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

    本篇文章将深入探讨Java中的四种内部类:实例内部类、局部内部类、匿名类和静态内部类,并通过实例代码进行详细解析。 1. **实例内部类**:这是最常见的内部类形式,它在外部类的实例方法或成员位置定义。实例内部...

    java 匿名内部类的使用规范

    本篇文章将深入探讨Java匿名内部类的使用规范,帮助你更好地理解和应用这一特性。 首先,理解匿名内部类的基本概念。匿名内部类没有名字,它不能被其他类直接引用,但可以作为局部变量、成员变量或者方法参数。它...

    Java4Android 35_内部类和匿名内部类

    4. **匿名内部类**: 没有名字的内部类,通常用在只需要一次使用的场合,简化代码。 **匿名内部类** 匿名内部类是一种没有名字的内部类,它常用于实现接口或者继承一个类,并且只需要一次使用的情况。其基本语法...

    内部类 匿名内部类 内部接口 对比说明

    本文将详细探讨内部类、匿名内部类以及内部接口的对比和使用。 首先,让我们了解一下内部类的基本概念。内部类定义在其他类的内部,编译后会生成两个独立的类文件。内部类能够自由地访问外部类的所有成员,包括私有...

    java 集合和内部类资料

    3. 匿名内部类:没有名字的内部类,通常用作接口的匿名实现或创建一次性使用的类。 4. 静态内部类:与成员内部类类似,但可以独立于外部类实例存在,且不隐式持有外部类的引用。 内部类可以访问外部类的所有成员,...

    内部类代码

    1. 成员内部类:这是最常见的内部类形式,它作为外部类的一个成员存在,可以在外部类的任何地方被定义。成员内部类可以访问外部类的所有成员,包括私有成员。 2. 局部内部类:局部内部类定义在方法或块的内部,其...

    Java内部类总结,内部类的共同特征,内部类的分类等

    1. 成员内部类:即在一个类中直接定义的内部类,成员内部类与普通的成员没什么区别,可以与普通成员一样进行修饰和限制。成员内部类不能含有 static 的变量和方法。 2. 局部内部类:即在一个方法中定义的内部类,...

    java内部类使用例子

    这种内部类可以是成员内部类、局部内部类、匿名内部类或静态内部类,每种都有其特定的用途和使用场景。在这个"java内部类使用例子"中,我们将深入探讨这些类型,并通过实际代码来理解它们的工作原理。 首先,成员...

    内部类示例

    首先,我们有四种类型的内部类:成员内部类、局部内部类、匿名内部类和静态内部类。 1. 成员内部类:这种类型的内部类与外部类的成员变量地位相同,可以在任何地方声明,可以访问外部类的所有成员。例如: ```java...

    java 内部类应用

    1. 成员内部类:这是最常见的内部类形式,它作为外部类的一个成员,可以在外部类的任何地方声明。成员内部类可以访问外部类的所有成员,包括私有成员。 2. 局部内部类:定义在方法、构造器或块中的类,它的作用域仅...

    JAVA_内部类_反射机制

    1. 成员内部类:这类内部类就像外部类的成员,可以访问外部类的所有成员,包括私有成员。它们可以有自己的修饰符,但不能是`static`。创建成员内部类的对象需要通过外部类的对象来完成,如`Outer.Inner inner = ...

Global site tag (gtag.js) - Google Analytics