成员内部类知识普通的内部类,它定义于另外一个类的内部,形式如下面所示:
public class Outer { private String username; public Outer(String username){ this.username=username; } //定义成员内部类 class Inner{ public void out(){ System.out.println("我是内部类的方法:"+username); } } public static void main(String[] args) { Outer outer=new Outer("moweng"); //成员内部类需要依赖于外部类而存在 Outer.Inner inner=outer.new Inner(); inner.out(); } }
我是内部类的方法:moweng
注:成员内部类可以无条件访问外部类的所有成员属性和成员方法,外部内如果需要访问内部类,需要创建一个成员内部类的实例对象:例子如下:
public class Outer { private String username; public Outer(String username){ this.username=username; //获取内部类 调用内部类的方法 getInner().out(); } class Inner{ public void out(){ System.out.println("我是内部类的方法:"+username); } } //返回一个内部类的实例对象 public Inner getInner(){ return new Inner(); } public static void main(String[] args) { Outer outer=new Outer("moweng"); } }
2.局部内部类
局部内部类是定义在一个方法或者作用域里面的类,它和成员内部类的区别为局部类的访问权限仅限于方法内或者改作用域内
public class Outer { private String username; public Outer(String username){ this.username=username; } //外部类的成员方法 public void method(){ //局部内部类 class Inner{ public Inner(){ System.out.println("我是一个方法内部类"); } } Inner inner=new Inner(); } public static void main(String[] args) { Outer outer=new Outer("moweng"); outer.method(); } }
3.静态内部类:
静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类 似,并且它不能使用外部类的非static成员变量或者方法,这点很好理解,因为在没有外部类的对象的情况下,可以创建静态内部类的对象,如果允许访问外 部类的非static成员就会产生矛盾,因为外部类的非static成员必须依附于具体的对象。
public class Outer { private String username; public Outer(String username){ this.username=username; } static class Inner{ public Inner(){ System.out.println("我是一个静态内部类"); } } public static void main(String[] args) { //静态内部类的创建不依赖于外部类 Inner inner=new Inner(); } }
4.匿名内部类
public class Outer { public Outer(){ } public Object method(){ //匿名内部类 return new Object(){ public String toString(){ return "我是匿名内部类的方法"; } }; } public static void main(String[] args) { Object object=(new Outer()).method(); System.out.println(object.toString()); } }
相关推荐
### Java内部类解析 #### 什么是Java内部类? 在Java中,内部类是一个在其另一个类的内部声明的类。这种内部关系意味着内部类是外部类的一部分,并且可以访问外部类的所有成员,包括私有成员。这为Java提供了一种...
本文将详细解析Java内部类的四种类型及其特点。 1. 成员内部类:这是最常见的内部类形式,它可以作为外部类的成员存在。成员内部类可以访问外部类的所有成员,包括私有成员,但不能包含静态声明。成员内部类的实例...
Java内部类是Java编程语言中的一个特色特性,它允许在一个类的定义内部定义另一个类。自Java 1.1引入内部类以来,这种特性一直备受争议。一方面,它提供了更高级别的封装和抽象,另一方面,如果使用不当,可能导致...
本篇文章将深入探讨Java中的四种内部类:实例内部类、局部内部类、匿名类和静态内部类,并通过实例代码进行详细解析。 1. **实例内部类**:这是最常见的内部类形式,它在外部类的实例方法或成员位置定义。实例内部...
本文将深入探讨Java中的四种内部类:非静态内部类、静态内部类、局部内部类和匿名内部类。 1. 非静态内部类(也称为成员内部类) 非静态内部类是定义在外部类的成员位置的类,它可以访问外部类的所有成员,包括私有...
### Java内部类详解 #### 一、内部类的分类与概念 Java的内部类机制是其强大特性之一,它允许类作为另一个类的成员存在,从而增强了代码的封装性和复用性。根据定义和作用域的不同,Java内部类主要分为四类: 1. ...
### C++内部类详细分析 #### 一、引言 面向对象编程(OOP)自诞生以来,便成为了软件工程领域的重要组成部分。C++作为一种广泛使用的编程语言,支持面向对象编程特性,包括多重继承。多重继承是指一个类可以从多个...
#### 二、静态内部类的示例解析 接下来,我们将通过一个具体的例子来深入理解静态内部类的特点及其使用场景。 ```java public class Outer { private static int i = 1; private int j = 10; public static ...
Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内部定义另一个类。内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现某些特定设计模式时非常有用。本篇文章将深入探讨Java内部...
内部类有四种主要类型:成员内部类、静态嵌套类、方法内部类和匿名内部类。 1. 成员内部类:这类内部类就像外部类的成员,可以访问外部类的所有成员,包括私有成员。它们可以有自己的修饰符,但不能是`static`。...
### 反射私有内部类的例子 #### 一、引言 在Java编程语言中,反射(Reflection)是一项强大的功能,允许程序在运行时检查和修改自身结构与行为。通过反射,可以动态地获取类的信息并操作其字段、方法以及构造器等。...
内部类主要分为四种类型:成员内部类、局部内部类、静态内部类和匿名内部类。 1. **成员内部类**:作为外部类的一个成员存在,类似于外部类的属性或方法。它能够访问外部类的所有成员,包括私有的。但成员内部类...
### Java接口与内部类知识点详解 #### 接口概述 - **接口定义**: 在Java中,接口(Interface)是一种抽象类型,它定义了一组方法签名(即方法的名称和参数列表),但没有具体实现(即没有方法体)。接口提供了一种...
了解.doc文件的内部结构有助于我们更好地理解和处理这类文件,特别是在进行文档编程、数据恢复或格式转换时。本文将深入探讨.doc文件的内部结构,并介绍一款用于查看二进制流的工具,以帮助读者提升对这一领域的理解...
而`php模版解析类`文件很可能是实现这个功能的PHP源代码,我们可以查看其内部实现,学习如何编写这样的解析类,或者直接将其集成到我们的项目中。 通过深入理解并应用这样的PHP模板解析类,我们可以提高开发效率,...
标题 "idea-plugin-generator-properties" 指的是一种用于 IntelliJ IDEA 插件开发的工具,它专注于生成基于类字段的内部类。这个工具的核心目的是简化插件开发过程中代码的生成,尤其是那些与属性处理相关的部分。...
涵盖主题广泛,从排序算法到Eclipse快捷键大全,再到Java语言学习,包括面向对象编程原理,Java基础异常介绍,内部类解析及JDBC连接多种数据库的操作,同时提供了MVC设计模式理解和多线程创建的方式说明。...
本文旨在深入解析内部类的种类及其在Java中的应用技巧,帮助开发者合理利用这一特性。 #### 内部类概述与种类 内部类(Inner Classes)是定义在另一个类或接口中的类,它们主要分为四种类型:成员内部类、静态嵌套...
本篇将深入探讨四种类型的内部类:成员内部类、局部内部类、匿名内部类和静态内部类,并通过实例来解析它们的定义、实例化和引用方式。 1. **成员内部类**: 成员内部类就像是外部类的成员,可以是私有的或具有...