java实例内部类

article/2025/10/11 22:25:27

内部类:可以将一个类定义在另一个类或者一个方法的内部。描述一个事物的一个完整结构的描述。内部类包括:实例内部类(普通内部类),静态内部类,局部内部类(定义在方法里,几乎不用)和匿名内部类。本文针对实例内部类进行介绍。
1.对于内部类来说,和普通的成员变量是同一等级的,也依赖于对象。所以,需要外部类对象的引用才能进行内部类的实例化。
2.如何实例化内部类对象:
代码中提供了两个方法

    OutClass out = new OutClass();OutClass.InnerClass inner1= out.new InnerClass();

②一步到位

   OutClass.InnerClass inner2 = new OutClass().new InnerClass();

总的来说,就是定义方法:
外部类名.内部类名 变量 = 外部类对象的引用.new 内部类()
3.实例内部类中能定义静态成员变量吗?
不能,但可以通过加final关键字把它变成常量,定义必须要是编译的时候就确定的值,也就是说必须时static final的。定义时也要进行初始化。

public static final int data6 = 60;

4.实例内部类当中,有成员变量名和外部类的成员变量名冲突了怎么办
优先使用自己的
那么如何拿到外部类的呢?

       System.out.println("外部类的data1:"+OutClass.this.data1);System.out.println("内部类的data1:"+this.data1);

可以得出结论:实例内部类不仅包含了自己的this,也包含了外部类的this
5.如何在外部类中访问实例内部类的成员变量和成员方法呢?

public void funcOut(){InnerClass in = new InnerClass();System.out.println(in.data5);in.func2();System.out.println("外部类的普通成员方法");}

通过实例化内部类对象,用.操作符去访问
6.实例内部类能拿到外部类的成员变量吗?

public void func(){System.out.println(data1);System.out.println(data2);System.out.println(data3);System.out.println(data4);System.out.println(data5);System.out.println(data6);}

可以看到,不仅可以访问public权限的,也能访问private权限的,静态的也能访问。
7.实例内部类中可以有静态成员方法吗?
不行!无法通过编译。
在这里插入图片描述
8.实例内部类字节码文件说明
在这里插入图片描述
外部类$内部类。
所以当用到实例内部类时,加载实例内部类的字节码文件,不用时不加载。
其次,内部类和外部类共用一个java源文件,经过编译之后,内部类会形成单独的字节码文件。

总结:

1.外部类的任何成员都可以直接在实例内部类方法中访问。
2.实例内部类所处的位置与外部类成员的位置相同,所以受public、private等访问限定符的约束
3.在实例内部类方法中访问同名的方法时,优先访问自己的。如果要访问外部类的同名的成员,使用外部类名.this.同名成员方式访问。
4.实例内部类对象必须先有外部类对象才能创建
5.实例内部类的非静态方法中包含了一个指向外部类对象的引用(即this)。
6.外部类中,不能直接访问内部类成员,如果要访问,必须先创建内部类对象

## 整体代码

class OutClass{public int data1 = 10;private int data2 = 20;public static int data3 = 30;/*** @Description:实例内部类*/class InnerClass{public int data4 = 40;private int data5 = 50;public static final int data6 = 60;public int data1 = 88;public InnerClass(){System.out.println("实例内部类的构造方法");}public void func(){System.out.println(data1);System.out.println(data2);System.out.println(data3);System.out.println(data4);System.out.println(data5);System.out.println(data6);System.out.println("外部类的data1:"+OutClass.this.data1);System.out.println("内部类的data1:"+this.data1);System.out.println("实例内部类的普通成员方法");}public void func2(){System.out.println("实例内部类的普通成员方法");}}public void funcOut(){InnerClass in = new InnerClass();System.out.println(in.data5);in.func2();System.out.println("外部类的普通成员方法");}
}
public class TestDemo {public static void main(String[] args) {OutClass out = new OutClass();OutClass.InnerClass inner1= out.new InnerClass();OutClass.InnerClass inner2 = new OutClass().new InnerClass();System.out.println("_________________");out.funcOut();}
}

在这里插入图片描述


http://chatgpt.dhexx.cn/article/4RwI550a.shtml

相关文章

Java内部类介绍 - 局部内部类和匿名内部类

文章目录 内部类局部内部类匿名内部类匿名内部类介绍常见的使用形式开发中使用场景 内部类 局部内部类 局部内部类 (鸡肋语法,了解即可) 局部内部类, 在方法、代码块、构造器等执行体中创建一个类, 称为为局部内部类(但是我们一般都不会这样…

夯实Java基础系列8:深入理解Java内部类及其实现原理

本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star、Fork、Watch三连哈,感谢你的支持。 文章首发于我的个人博客: www.how2playlife.c…

初识JAVA内部类

1 内部类概述 如果一个类存在的意义就是为指定的另一个类,可以把这个类放入另一个类的内部。 就是把类定义在类的内部的情况就可以形成内部类的形式。 A类中又定义了B类,B类就是内部类,B类可以当做A类的一个成员看待: 2 特点 1) 内部类可以直接访问外…

java 内部类怎么调用成员变量_JAVA内部类之成员内部类

JAVA有一个特殊的类形式——内部类(这个词有点为难普通话不好的南方朋友)。今天我们就来聊聊内部类的一种:成员内部类。 如何定义成员内部类 那要如何定义成员内部类呢。 既然叫成员内部类,说明和成员变量是有类似的地方。从代码的层次结构上来看他是和成…

Java内部类(匿名内部类)

Java内部类(匿名内部类) 一、内部类二、静态内部类三、成员内部类四、局部内部类(了解即可)五、匿名内部类(重要) 一、内部类 1、概述 内部类就是一个定义在一个类里面的类,里面的类可以理解为…

Java 内部类的四种实现方式

Java 内部类的四种实现方式 前言 今天的话我将为大家介绍Java的四种内部类,他们分别是普通内部类,静态内部类,局部内部类,匿名内部类。 提示:以下是本篇文章正文内容,下面案例可供参考 一、内部类是什么&…

Java内部类

Java内部类 内部类成员内部类局部内部类匿名内部类静态内部类常规面试案例内部类实例化对象重名变量的引用 内部类 是什么? 字面意思,在类的内部编写的类就叫内部类! 为了方便区分、学习、理解我们一般将内部类分为以下几种! 内部…

java内部类赋值_详解 Java 内部类

内部类在 Java 里面算是非常常见的一个功能了,在日常开发中我们肯定多多少少都用过,这里总结一下关于 Java 中内部类的相关知识点和一些使用内部类时需要注意的点。 从种类上说,内部类可以分为四类:普通内部类、静态内部类、匿名内部类、局部内部类。我们来一个个看: 普通…

java new 一个内部类_java内部类

java内部类的几种类型:成员内部类,静态内部类,方法内部类,匿名内部类。 成员内部类:成员内部类是类内部的非静态类。成员内部类不能定义静态方法和变量(final修饰的除外)。这是因为成员内部类是非静态的,类初始化的时候先初始化静态成员,如果允许成员内部类定义静态变量…

java中的内部类

java中的内部类主要分为两类四种: 第一类:定义在外部类局部位置上,分为局部内部类( 有 类名)、匿名内部类(没有类名)。 第二类:定义在外部类的成员位置上,分为成员内部类(没有static修饰)、静态内部类(使用static修饰…

java内部类最全详解

1、成员内部类 内部类与外部类的关系 a.成员内部类的创建需要依赖于外部类对象-(成员方法必须通过对象调用),在没有外部类实例之前无法创建成员内部类对象 b.内部类与外部类相对独立,不是is a 的关系(发动机-汽车&am…

Java内部类详解(含:成员内部类、局部内部类、匿名内部类、静态内部类)

内部类是什么? 字面意思,在类的内部编写的类就叫内部类!即一个类的内部又完整的嵌套了另一个类结构,被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。 内部类是类的第五大成员→【提示:类的五大成员…

分享15款很棒的 JavaScript 开发工具javascript

在开发中,借助得力的工具可以事半功倍。今天,这篇文章向大家分享最新收集的15款非常有用的 javascript 开发工具。 testswarm: continious & distributed js testing testswarm是mozilla实验室推出的一个开源项目,它旨在为开发者提供在多个浏览器版本上快速轻松测试自己j…

27 个面向开发人员的最佳 Vue.js 开发工具

英文 | https://javascript.plainenglish.io/best-27-vuejs-development-tools-for-developers-bd972bb5f573 01、BootstrapVue 地址:https://bootstrap-vue.org/ 一个用于 Vue.js 构建引导接口的开源库。 02、Vuex 地址:https://vuex.vuejs.org/ Vue.js…

15 款非常有用的 JavaScript 开发工具

开发者有个趁手的工具将事半功倍。今天这篇文章分享给大家最新的15款非常有用的JavaScript 开发工具。 列表如下: TestSwarm: Continious & Distributed JS Testing TestSwarm提供分布式的JavaScript持续集成测试。最初它的创造者John Resig只是将它作为…

03【WebStorm开发工具】

上一篇:02【HTML快速入门】 下一篇:04【】 目录:【HTML5系列教程】 文章目录 三、WebStorm开发工具3.1 WebStorm简介3.2 WebStorm安装3.3 WebStorm基本使用3.3.1 创建项目3.3.2 调整字体大小3.3.3 代码自动补全3.3.4 WebStorm常用快捷键 三…

web开发者工具 js

作为Web开发人员,我为什么喜欢Google Chrome浏览器 【原文地址:http://www.cnblogs.com/QLeelulu/archive/2011/08/28/2156402.html 】 在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更…

JavaScript 专用开发工具

下载地址:http://soooh.com/3/jsedit.rar javaScript专用编辑工具,免费绿色版,需要.net2.0才能运行。 特色:左侧能列出javascript的函数列表,适合修改很大的js文件。

顶级 Vue.js 开发工具

Vue.js已成为当前最热门的JavaScript前端框架。Vue 是构建有用应用程序和网站的完美选择,无论你是经验丰富的开发人员,正希望切换到 Vue 上,还是刚刚开始工作的新人——选择正确的工具都是非常重要的。在合适的工具帮助下,你就能快…

JavaScript开发工具大全

译文:https://blog.fundebug.com/2017/06/19/javascript-tool-list/ 原文:https://da-14.com/blog/ultimate-list-javascript-tools \简介 2017年1月,Stack Overflow年度开发者调研一共访问了64000个程序员,发现JavaScript已经连续…