内部类

内部类包含:实例内部类(成员内部类)、静态内部类、本地内部类、匿名内部类 阅读详情

内部类概述:把类定义在其他类的内部,这个类就被称为内部类。

内部类分类:成员内部类、静态内部类、方法内部类(又叫局部内部类)和匿名内部类。

内部类共性:
1.内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。
2.内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 。
3.内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量。

一、成员内部类(member inner class):
格式:外部类名.内部类名 对象名 =外部类对象.内部类对象

class Outer{
    private int num1=52;
    public int num2=1;
    class Inner{
        public void show(){
            System.out.println(num1);
            System.out.println(num2);
        }
    }
}
public class InnerClassOne {
    public static void main(String[] args) {
        Outer.Inner oi=new Outer().new Inner();
        oi.show();  //控制台输出:52 1    
    }
}

二、方法内部类(也叫局部内部类 Local Inner Class)
1.局部内部类定义在方法中,比方法的范围还小,是内部类中最少用到的一种类型。
2.像局部变量一样不能被public, protected, private和static修饰。
3.只能访问方法中定义的final类型的局部变量。
4.局部内部类在方法中定义,所以只能在方法中使用,即只能在方法当中生成局部内部类的实例并且调用其方法。(只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化)。

class Outer{
    public int num1=5;
    private int num2=7;
    public void method(){
        int num3=4;//没有修饰符
        final int num4=9;//局部变量用final修饰
        class Inner{
            public void doSomething(){
                System.out.println(num1);//内部类可以自由地访问
                System.out.println(num2);//外部类的成员变量
                System.out.println(num3);
                System.out.println(num4);
            }
        }
        Inner in=new Inner();
        in.doSomething();
        //局部内部类在方法中定义,所以只能在方法中使用,
        //即只能在方法当中生成局部内部类的实例并且调用其方法。
    }

}
public class InnerClassTwo {
    public static void main(String[] args) {
        Outer ou=new Outer();
        ou.method();
    }
}//输出:5 7 4 9

上面说:只能访问方法中定义的final类型的局部变量。这句话感觉等于没说,因为在方法体里面本来就不能使用public, protected, private和static这样的修饰符去修饰局部变量!局部内部类相当于局部变量当然也不能被这些修饰符修饰。这些修饰符是修改类的属性或方法的,不是修饰局部变量的。

三、静态内部类(Static Inner Class)
类定义时加上static关键字
静态内部类中可以定义静态或者非静态的成员
只可以访问外部类的静态成员和静态方法
格式:外部类名.内部类名 对象名 =new 外部类名.内部类名()

class Outer{
    private int num1=3;
    static int num2=5;
    static class Inner{
        //静态内部类中可以定义静态或者非静态的成员
        public void method1(){
            //System.out.println(num1);不能访问外部类非静态成员
            System.out.println(num2);
        }
        public static void method2(){
            //System.out.println(num1);不能访问外部类非静态成员     
            System.out.println(num2);
        }
    } 
}
public class InnerClassThree {
    public static void main(String[] args) {
        //Outer.Inner oi=new Outer().Inner();
        //内部类被静态修饰之后不能通过外部类的对象访问,要用外部类名访问
        Outer.Inner oi=new Outer.Inner();
        oi.method1();
        oi.method2();
    }
}//输出:5 5

四、匿名内部类(Anonymous Inner Class)
其实可以理解为内部类的简化写法
前提:存在一个类(不管是不是抽象的)或者接口
本质:是一个继承了该类或者实现了该接口的子类匿名对象
1.前提为存在一个具体类时

class Demo{
    public void method1(){
        System.out.println("method1");
    }
    public void method2(){
        System.out.println("method2");
    }
}
class Outer{
    public void method(){
        new Demo().method1();
        new Demo().method2();//匿名类直接调方法
    }
}
public class InnerClassFour {
    public static void main(String[] args) {
        Outer ou=new Outer();
        ou.method();
    }
}//输出:method1  method2

2.前提是存在一抽象类或者接口时
要重写接口中的所有方法或抽象类中的所有抽象方法。

interface Demo{
    public void method1();
    public void method2();
}
class Outer{
    public void method(){
        new Demo(){
            public void method1(){
                System.out.println("method1");
                };
            public void method2() { 
                System.out.println("method2");
                };
            }.method1();//虽然只调用一个方法但也要重写接口中所有的方法
    }
}
public class InnerClassFour {
    public static void main(String[] args) {
        Outer ou=new Outer();
        ou.method();
    }
}//输出:method1

虽然只调用一个方法但也要重写接口中所有的方法,当接口中的方法比较多的时候就麻烦了,可以用多态解决。将部分代码改为下面代码就可以输出:method1 method2

class Outer{
    public void method(){
        Demo d=new Demo(){
            public void method1(){
                System.out.println("method1");
                };
            public void method2() { 
                System.out.println("method2");
                };
            };//这部分代码只需写一次
        d.method1();
        d.method2();
    }
}

参考链接:
http://www.cnblogs.com/mengdd/archive/2013/02/08/2909307.html

C# USB通信实现 在C#中,我们可以利用.NET框架提供的类库和API来实现与USB设备的通信。本文将介绍如何使用C#进行USB通信,并提供相应的代码示例。以上就是使用C#进行USB通信的基本过程。通过以上代码示例,你可以实现与USB设备的简单通信,具体的实现方式和细节根据你的实际需求进行调整和扩展。命名空间,该命名空间包含了与串口通信相关的类和方法。选择需要通信的USB设备,然后使用。步骤二:获取可用的USB设备列表。首先,在你的C#项目中引入。步骤三:打开USB端口。步骤六:关闭USB端口。步骤一:引入命名空间。 阅读详情

相关推荐

SpringBoot3 + Vben5.0实战:从零搭建企业级管理后台(附完整代码)

本文详细介绍了如何从零开始,使用SpringBoot3与Vben5.0技术栈搭建现代化企业级管理后台。通过对比分析,阐述了该组合在开发效率、性能(如虚拟线程)和权限模型(RBAC)方面的优势,并提供了从项目初始化、核心功能开发到部署运维的完整实战指南,帮助开发者快速构建高性能、易维护的后台系统。

weixin_29306317的博客 172

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

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

leaf__yang的博客 2万+

Python实战:3分钟搞定A股K线数据抓取(附东方财富/腾讯API完整代码)

本文为量化交易初学者提供了一份快速获取A股K线数据的实战指南。通过对比东方财富与腾讯财经两大免费API的优劣,并附上可直接运行的完整Python代码,帮助读者在3分钟内搭建起自己的数据抓取管道,为构建量化交易系统奠定坚实的数据基础。

weixin_29062255的博客 2920

内部类(成员内部类、静态内部类、方法内部类)

一:成员内部类:最常见的内部类就是成员内部类,也称作普通内部类;1、Inner类定义在Outer类的内部,相当于Outer类的成员变量的位置,Inner类可以使用任意访问修饰符,如:public、private、protected等。2、Inner类中定义的test()方法可以访问Outer类中的数据,不受访问控制符的影响。3、定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去......

liu771626413的博客 4万+

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1767

告别混乱接线!用EPLAN 3D布局图,手把手教你搞定电气柜的3D建模与自动布线

本文详细介绍了如何使用EPLAN 3D布局图进行电气柜的3D建模与自动布线,帮助工程师告别混乱接线。从项目准备、基础结构建模到智能设备布局与逻辑定义,再到高级布线技术与问题排查,提供了一套完整的实战指南。通过EPLAN的3D功能,显著提升设计效率与系统可靠性。

weixin_30680385的博客 341

什么是内部类?内部类的种类?内部类的作用?

一、什么是内部类 将一个类定义在一个类或者一个方法里面,这样的类称着内部类 https://www.jianshu.com/p/83a50ef23279 https://blog.youkuaiyun.com/lianxu3344/article/details/79473607 https://blog.youkuaiyun.com/flyfeifei66/article/details/82686086 https:...

T-bright的博客 1万+

Palabos User Guide中文解读 | 第五章 | Palabos编程 (跳过了第四章Palabos-Java接口)

作者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,翻了一节后发现这可能算侵权,就比较伤脑筋,突然想到自己写中文解读即可,便有了下面的博客。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of Geneva Jul...

Yulan Fang's notes. 2298

内部类(成员内部类、局部内部类、匿名内部类、静态内部类)

内部类(成员内部类、局部内部类、匿名内部类、静态内部类)

weixin_44216665的博客 5906

Codex入门00-初识神器(小白入门:到底什么是Codex CLI,和ChatGPT写代码有什么不同?)

OpenAI Codex CLI 是 OpenAI 于2025年推出的终端原生AI编程代理,不是在网页里聊天写代码,而是直接在你的终端里自主读代码、改文件、跑命令。它拥有三种安全模式、/goal 持久化任务、云端沙箱执行等独特能力。本文从零介绍 Codex CLI 的核心概念、与 ChatGPT 写代码的本质区别、典型使用场景和费用说明,让你全面认识这个改变开发方式的神器。

yueyeguzhuo的专栏 302

4、基于球面波展开的近场/远场变换技术解析

本文深入解析了基于球面波展开的近场/远场变换技术,涵盖坐标系统选择、截断测量处理、高级SWE方法及实际应用场景。重点介绍了广义SWE、全探头补偿、平移SNF测量(TSWE)等关键技术,结合吸收材料与导电地板系统的误差处理方案,系统总结了各类方法的优缺点与适用场景,并通过流程图和案例分析展示了技术应用路径。该技术在汽车、通信和航空航天领域的天线测量中具有重要价值,可显著提升测量效率与精度。

dell8的博客 256

java内部类之成员内部类、局部内部类和匿名内部类

内部类概念 一个类中包含另外一个类。 分类 1、成员内部类。 2、局部内部类(包含匿名内部类)。 成员内部类 定义格式: 修饰符 class 类名称 { 修饰符 class 类名称 { //... } //... } 注意: 内部类使用外部,可以随意访问,但是外部类使用内部类要借助内部类的对象。 使用成员内部类 两种方法: 1...

green703338130的博客 6713

STC单片机 普通 I/O 口中断功能介绍和使用

STC32单片机 普通 I/O 口中断功能介绍和使用

perseverance51博客 3048

内部类(成员内部类+局部内部类+静态内部类+匿名内部类)

内部类的定义:在java中,允许在一个类的内部定义类,称为内部类,这个内部类所在的类称为外部类。内部类定义在外部内的内部,通常只服务于外部类,对于其他外部是不具备可见性的。内部类应用场景:1.当某个类只为一个类提供服务时,可以将这个类定义成内部类 2.可以解决接口或者抽象类不能实例化的问题 成员内部类:在一个类中除了可以定义成员变量,成年方法,还可以定义类,这样的类称为成员内部类。在成员内部类中可以访问外部类的所有成员资源(包括私有成员),例如成员变量

qq_51768153的博客 4361

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java 四大内部类总结——局部内部类,匿名内部类,成员内部类,静态内部类

Java 四大内部类总结——局部内部类,匿名内部类,成员内部类,静态内部类

prince0520的博客 3118

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Java基础】内部类 (成员内部类、局部内部类、静态内部类、匿名内部类)

Java内部类 (成员内部类、局部内部类、静态内部类、匿名内部类)

good good study day day up 3398

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

什么是内部类?内部类的作用

在java语言中,可以把一个类定义到另外一个类的内部,在类里面的这个类就叫内部类,外面的类就叫外部类。 在这情况下,这个内部类可以看做外部类的一个成员。 内部类好处 1.隐藏你不想让别人知道的操作,也即封装性。 public interface Contents { int value(); } public interface Destination { String readLabel...

yy471101598的博客 9670

Java内部类这一篇就够啦,超详细,新人友好(成员内部类、静态内部类、局部内部类和匿名内部类)

详细的介绍成员内部类、静态内部类、局部内部类和匿名内部类,超详细,值得收藏!

shiyuechunfeng的博客 2765

什么是内部类?成员内部类、静态内部类、局部内部类和匿名内部类的区别及作用?

一、什么是内部类?or 内部类的概念 内部类是定义在另一个类中的类;下面类TestB是类TestA的内部类。即内部类对象引用了实例化该内部对象的外围类对象。 public class TestA{ class TestB {} } 二、 为什么需要内部类?or 内部类有什么作用? 1、 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。 2、内部类可以对同一个包中的其他类隐藏起来。 3、 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。 三、 内部类的分类 成员内部

sulixu的博客 3822

面试 | 什么是内部类?成员内部类、静态内部类、局部内部类和匿名内部类的区别及作用?

1 内部类的概念 内部类是定义在另一个类中的类;下面类B是类A的内部类。即内部类对象引用了实例化该内部对象的外围类对象。 public class A{ class B {} } 2 为什么需要内部类?(来自JAVA核心技术) 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。 内部类可以对同一个包中的其他类隐藏起来。 当想要定义一个回调函数且不想编写大量代码时,使用匿名内...

星空下的程序猿 3254

内部类与静态内部类

内部类与静态内部类 目录 前言 内部类 1.1 非静态内部类 1.1.1 定义 1.1.2 内部类的特殊语法规则 1.2 静态内部类 回到顶部 前言   如果你是一个急性子,没什么耐性的人,可以只看下句,自己去品味理解:   内部类:就是我是你的一部分,我了解你,我知道你的全部,没有你就没有我。(所以内部类对象是以外部类对象存在为前提的)   静态内部类:就是我跟你没关系,自己可以完全独立存在,但是我就借你的壳用一下,来隐藏自己。   如果还不知道静态和普通成员..

qq_40826814的博客 2984

java内部类之私有内部类、局部内部类、匿名内部类

一、私有内部类: class Out { private int age = 12; private class In { public void print() { System.out.println(age); } } public void outPrint() { new

gongpulin的博客 1万+

Java 内部类 ==> 成员内部类(非静态内部类、静态内部类)、匿名内部类、局部内部类

一般情况,我们把类定义成独立的单元。有些情况下,我们把一个类放在另一个类的内部定义,称为内部类(innerclasses)。 内部类可以使用public、default、protected 、private以及static修饰。而外部顶级类(我们以前接触的类)只能使用public和default修饰。 注意 内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不...

郑德帅 7451

java内部类之成员内部类、静态内部类

内部类其实就是一个类中还包含着另外一个类 如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类,而心脏又在人体当中,正如同是内部类在外部内当中 广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部

gongpulin的博客 4367

Java-内部类:成员内部类、局部内部类、匿名内部类、静态内部类

本文介绍了Java中内部类:成员内部类、局部内部类、匿名内部类、静态内部类,从5W2H以及它们的区别进行了描述

向诸位大佬虚心学习 1766

Java内部类[成员内部类、局部内部类、匿名内部类和静态内部类],代码讲解

/** * 标题:Java内部类[成员内部类、局部内部类、匿名内部类和静态内部类] * * 作者:Nstar * * 时间:2020年3月13日 * * 内容: * * 问:什么是内部类? * 答:在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。 */ public class Test13 { //测试类,用于测试案例 p...

Nstar的技术博客 3660
上一篇: 抽象类与接口杂记
下一篇: Object类概述
詹詹自喜KING
博客等级 码龄11年 40粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值