`

内部类详解及举例说明

阅读更多

内部类(Inner Class),内部类共分为4种。
1.静态内部类(static inner class):只能访问外部类的静态成员变量与静态方法,生成
静态内部类对象的方式为:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
2.成员内部类(member inner class):可以访问外部类的静态与非静态的方法与成员变
量。生成成员内部类对象的方式为:
OuterClass.InnerClass inner = new OuterClass().new InnerClass();
若想在局部内部类中访问外部类的成员变量,语法为:OuterClass.this.a;
3.局部内部类(Local Inner Class):定义在方法当中,只能访问方法中声明的final类型
的变量。
4.匿名内部类(Anonymous Inner Class):没有类名称的局部内部类;匿名内部类会隐式地继承一个父类或实现一个接口。

 

静态内部类和成员内部类比较简单在此就不举例了。

局部内部类代码示例:

package com.lfl.innerclass;

class LocalInner {
	private  int a = 3;
	
	public void doSomething() {
		final int i = 5;
		class Inner3 {
			
			public void test() {
				System.out.println(i);
				System.out.println(a);
				go();
			}
		}
		new Inner3().test();
	}
	
	public static void go() {
		System.out.println("hello");
	}
	
}


public class LocalInnerClassTest {

	public static void main(String[] args) {
		LocalInner inner = new LocalInner();
		inner.doSomething();
	}

}

 

 

匿名内部类代码示例:

package com.lfl.innerclass;

import java.util.Date;

public class AnonymousInnerClassTest {
	
	public String get(Date date) {
		return date.toLocaleString();
	}
	
	public Object getObject() {
		return new Object() {
			public String toString() {
				System.out.println("hello world2");
				return "hello";
			}
		};
	}
	

	public static void main(String[] args) {
		AnonymousInnerClassTest inner = new AnonymousInnerClassTest();
		// non anonymous innerclass
		String date = inner.get(new Date());
		System.out.println(date);
		
		//anonymous innerclass
		String str = inner.get(new Date() {
			public String toLocaleString() {
				return "hello world";
			}
		});
		System.out.println(str);
		
		Object obj = inner.getObject();
		String s = obj.toString();
		System.out.println(s);
	}

}

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    内部类介绍

    《内部类详解》 内部类是Java编程语言中一种独特的特性,它允许我们在一个类的内部定义另一个类。本文将详细介绍内部类的种类及其特点,包括成员内部类、方法内部类、匿名内部类和静态嵌套类。 首先,我们要了解为...

    css中padding、margin两个重要属性的详细介绍及举例说明

    ### CSS中的Padding与Margin属性详解 #### 一、引言 在前端开发中,CSS(层叠样式表)是用于定义HTML文档外观的核心技术之一。其中,`padding`与`margin`是两个至关重要的属性,它们直接影响着网页元素的空间布局...

    HP-UNIX基础详解(内部培训)

    - **常用的变量赋值:** 举例说明常见的变量设置。 - **变量的存储机制:** 变量的作用范围。 - **显示变量的值:** 如何查看已定义的变量值。 - **将本地变量转移到用户环境中:** 将临时变量设置为永久性变量...

    举例说明自定义C++异常处理的实例

    在第一个例子中,我们创建了一个名为`myException`的自定义异常类,它是C++标准库中的`exception`类的子类。`myException`类只有一个构造函数,该构造函数通过传递错误消息字符串给基类的构造函数来初始化异常。在`...

    plc扫描时间计算举例说明

    ### PLC扫描时间计算详解 #### 一、引言 在工业自动化领域,可编程逻辑控制器(PLC)作为核心控制设备被广泛应用。了解PLC的工作原理及其扫描时间的计算方法对于优化控制系统性能至关重要。本文将通过一个具体的...

    STM32定时器功能和用法详解

    普通定时器的时钟可以源自内部时钟源,也可以是通过引脚或触发输入的外部时钟源。这些时钟源可以配置为向上计数、向下计数或双向计数模式。 配置定时器的一般步骤包括: 1. 配置系统时钟,确保为定时器提供正确的...

    常用网络测试命令详解

    ### 常用网络测试命令详解 #### 一、Ping ...通过以上命令的详细介绍和举例说明,可以更深入地理解这些网络测试命令的功能及其使用方法。这些命令对于网络故障排查、性能优化和日常维护都是非常有用的工具。

    linuxc 函数详解

    Linux C函数详解是关于在Linux操作系统环境下,C语言编程中可以调用的系统级别的函数的详细解释说明。在Linux C编程中,系统调用是用户程序请求操作系统内核提供服务的一种方式。系统调用是操作系统核心功能的接口,...

    GS1-128条形码和相关的AI及FNC1的详解 v1.0

    ### GS1-128条形码及相关AI与FNC1详解 #### 一、什么是GS1? GS1,前身称为EAN International(欧洲物品编码协会),于2005年正式更名为GS1。该组织是非营利性的,其主要目标是设计并推广一系列标准化体系,以增强...

    举例详解Java中的访问权限修饰符

    举例说明: ```java package pack1; public class BaseClass { protected int protectedVar; // 只有pack1包内的类和BaseClass的子类可以访问 void protectedMethod() {} // 同上 defaultVar; // 默认权限,...

    TCP/IP详解-卷一

    ### TCP/IP详解-卷一 知识点梳理 #### 第1章 概述 - **1.1 引言** TCP/IP是Internet的核心协议,由一系列协议组成,包括但不限于传输控制协议(TCP)、用户数据报协议(UDP)以及网际协议(IP)。这一节简要介绍...

    TCP/IP详解卷2:实现

    7. 计算机网络维护:系统管理员可以通过本书深入理解TCP/IP协议的内部工作原理,这对于他们进行网络的配置、诊断和维护工作非常有帮助。 8. 面向程序员和系统管理员:本书的内容兼顾了网络编程和网络维护两个方面,...

    黑盒测试和白盒测试区别及测试案例

    ### 黑盒测试和白盒测试的区别及案例详解 #### 一、黑盒测试与白盒测试概述 在软件开发过程中,确保软件的质量至关重要。为了达到这个目标,开发者们广泛运用了多种测试策略和技术。其中,“黑盒测试”与“白盒...

    C#封装详细解释

    ### C#封装详解 #### 封装的概念及意义 封装是面向对象编程(OOP)中的一个核心概念,它指的是将数据及其对数据的操作绑定在一起,同时隐藏这些数据和操作的内部实现细节。简而言之,封装是将软件的实现细节进行隔离...

    举例详解PHP脚本的测试方法

    举例说明,我们可以创建一个类如`ForumPosting`,它封装了HTTP请求处理和响应获取,内部包含了模拟的HTTP环境和输出缓冲控制。测试时,通过调用`handleRequest()`方法,传入模拟的POST请求数据,然后检查返回的响应...

    奥数第10讲加法原理和乘法原理综合运用例题和详解.docx

    本文将通过具体的例题和详解,展示这两个原理的综合运用,使读者能够更好地理解和掌握它们,从而提升解决奥数问题的能力。 首先,我们来探讨加法原理。加法原理,顾名思义,是指当完成某件事情可以有几种不同的方法...

    Apache Flink:基础架构与组件详解

    之后深入剖析了 Flink 的内部架构,涵盖各核心组件的功能和协同工作方式。文章进一步探讨了 Flink 在事件时间窗口处理方面的具体实现,并演示了如何运用 Flink 进行数据流的处理实例。此外,文章讨论了 Flink 不同...

    DIGITMAP配置详解

    实际应用举例说明 ##### 4.1 中国移动IMS项目DigitMap 在中国移动IMS项目中,DigitMap的配置需遵循中国移动的特定要求。例如,在某些场景下,可能需要针对特定的前缀号码设定不同的定时器值,以适应不同的业务...

Global site tag (gtag.js) - Google Analytics