java中的内部类总结

如何利用PREEvision和MATLAB开发AUTOSAR软件组件 在业界,比较著名的电子电气架构开发工具要属德国Vector公司开发的PREEvision工具了,而MATLAB/Simulink软件是非常高效且实用的基于模型的应用软件开发工具。利用PREEvision与Simulink联合开发AUTOSAR应用软件组件的开发流程有三种,分别是:“自上而下”开发流程(从PREEvision开始),“自下而上”开发流程(从Simulink开始),以及“双向”开发流程。如下图所示,无论哪一种开发流程,PREEvision与Simulink工具都是通过arxml文件进行信息交互的 阅读详情

java中的内部类总结
内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类

如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)

显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类

而心脏又在人体当中,正如同是内部类在外部内当中

实例1:内部类的基本结构

//外部类
class Out {
    private int age = 12;

    //内部类
    class In {
        public void print() {
            System.out.println(age);
        }
    }
}

public class Demo {
    public static void main(String[] args) {
        Out.In in = new Out().new In();
        in.print();
        //或者采用下种方式访问
        /*
        Out out = new Out();
        Out.In in = out.new In();
        in.print();
        */
    }
}

运行结果:12

从上面的例子不难看出,内部类其实严重破坏了良好的代码结构,但为什么还要使用内部类呢?

因为内部类可以随意使用外部类的成员变量(包括私有)而不用生成外部类的对象,这也是内部类的唯一优点

如同心脏可以直接访问身体的血液,而不是通过医生来抽血

程序编译过后会产生两个.class文件,分别是Out.class和Out$In.class

其中$代表了上面程序中Out.In中的那个 .

Out.In in = new Out().new In()可以用来生成内部类的对象,这种方法存在两个小知识点需要注意

  1.开头的Out是为了标明需要生成的内部类对象在哪个外部类当中

  2.必须先有外部类的对象才能生成内部类的对象,因为内部类的作用就是为了访问外部类中的成员变量

实例2:内部类中的变量访问形式

class Out {
    private int age = 12;

    class In {
        private int age = 13;
        public void print() {
            int age = 14;
            System.out.println("局部变量:" + age);
            System.out.println("内部类变量:" + this.age);
            System.out.println("外部类变量:" + Out.this.age);
        }
    }
}

public class Demo {
    public static void main(String[] args) {
        Out.In in = new Out().new In();
        in.print();
    }
}

运行结果:

局部变量:14
内部类变量:13
外部类变量:12

从实例1中可以发现,内部类在没有同名成员变量和局部变量的情况下,内部类会直接访问外部类的成员变量,而无需指定Out.this.属性名

否则,内部类中的局部变量会覆盖外部类的成员变量

而访问内部类本身的成员变量可用this.属性名,访问外部类的成员变量需要使用Out.this.属性名

实例3:静态内部类

class Out {
    private static int age = 12;

    static class In {
        public void print() {
            System.out.println(age);
        }
    }
}

public class Demo {
    public static void main(String[] args) {
        Out.In in = new Out.In();
        in.print();
    }
}

运行结果:12

可以看到,如果用static 将内部内静态化,那么内部类就只能访问外部类的静态成员变量,具有局限性

其次,因为内部类被静态化,因此Out.In可以当做一个整体看,可以直接new 出内部类的对象(通过类名访问static,生不生成外部类对象都没关系)

实例4:私有内部类

class Out {
    private int age = 12;

    private class In {
        public void print() {
            System.out.println(age);
        }
    }
    public void outPrint() {
        new In().print();
    }
}

public class Demo {
    public static void main(String[] args) {
        //此方法无效
        /*
        Out.In in = new Out().new In();
        in.print();
        */
        Out out = new Out();
        out.outPrint();
    }
}

运行结果:12

如果一个内部类只希望被外部类中的方法操作,那么可以使用private声明内部类

上面的代码中,我们必须在Out类里面生成In类的对象进行操作,而无法再使用Out.In in = new Out().new In() 生成内部类的对象

也就是说,此时的内部类只有外部类可控制

如同是,我的心脏只能由我的身体控制,其他人无法直接访问它

实例5:方法内部类

class Out {
    private int age = 12;

    public void Print(final int x) {
        class In {
            public void inPrint() {
                System.out.println(x);
                System.out.println(age);
            }
        }
        new In().inPrint();
    }
}

public class Demo {
    public static void main(String[] args) {
        Out out = new Out();
        out.Print(3);
    }
}

运行结果:

3
12

在上面的代码中,我们将内部类移到了外部类的方法中,然后在外部类的方法中再生成一个内部类对象去调用内部类方法

如果此时我们需要往外部类的方法中传入参数,那么外部类的方法形参必须使用final定义

至于final在这里并没有特殊含义,只是一种表示形式而已

48-OpenCVSharp —-Cv2.MatchTemplate() 函数功能(模板匹配)详解 是 OpenCV 中一个常见且简单的模板匹配算法,适用于目标检测和图像识别中的静态场景。它的优点是易于理解和实现,但在面对旋转、尺度变化、复杂背景或光照变化等挑战时,效果可能大打折扣。在这些情况下,结合多尺度图像、特征匹配算法(如 SIFT、SURF、ORB 等)以及深度学习模型可以显著提高匹配的鲁棒性和精度。模板匹配仍然是一个非常基础但强大的工具,适用于一些简单的图像匹配任务。对于更加复杂和动态的图像识别任务,我们通常会使用其他更加复杂的算法或者深度学习模型来处理。 阅读详情

相关推荐

2024最新实战:用1Panel面板+Docker快速部署Frps服务端(含Nginx配置模板)

本文详细介绍了2024年企业级内网穿透方案,通过1Panel面板和Docker技术快速部署Frps服务端,包含Nginx反向代理配置模板。从服务器选型、系统准备到安全加固,提供全栈实战指南,帮助企业和开发者高效实现内网穿透需求。

weixin_27966471的博客 419

java中的内部类_java中的内部类

java中很重要的一个知识点是内部类,经常会用到,参考百度百科整理如下:内部类分为:成员内部类、静态内部类、方法内部类、匿名内部类。内部类的特点:1、内部类任然是一个独立的类,编译后内部类会被编译成独立的.class文件,前面冠以外部类名和$符号;2、内部类是外部类的一个成员,因此可以自由地访问外部类的成员变量,无论是否是private类型的;3、内部类声明为静态的,就不能随便访问外部类的成员变量...

weixin_34998865的博客 172

数字IC后端项目典型问题之后端实战项目问题记录

数字IC后端培训教程之数字后端实战项目问题debug及解决方案记录

weixin_37584728的博客 1715

Java取不到内部类中的方法的解决

昨天做作业的时候遇到一个bug 代码如下: package Day2; public class Test8 { public static void main(String[] args) { TEST a = new Test8.TEST(); a.f(); } ...

diemei8613的博客 1082

Hcaptcha验证码破解深度解析:从环境检测到n值算法的攻防实战

本文深入解析Hcaptcha验证码的攻防技术,从环境检测到n值算法的全面突破策略。详细介绍了浏览器指纹模拟、图像识别工程化解决方案及协议层逆向分析,为安全研究人员提供高效破解Hcaptcha的实战指南。

weixin_42563415的博客 375

DeepLearningTool-深度学习分类-和HALCON的详细过程

损失函数:衡量预测误差,用于模型优化。混淆矩阵:评估分类模型性能,提供详细预测结果分析。两者结合使用,可以全面评估和优化模型。过拟合:模型过于复杂,捕捉了噪声,表现为训练集误差低,测试集误差高。欠拟合:模型过于简单,无法捕捉数据模式,表现为训练集和测试集误差都高。调整参数过拟合:简化模型、增加数据、使用正则化、早停、Dropout。欠拟合:增加模型复杂度、特征工程、增加训练时间、调整学习率、使用集成方法。通过合理调整参数和方法,可以有效避免过拟合和欠拟合,提升模型性能。

weixin_36672036的博客 6188

java找不到内部类_(转)maven编译提示找不到sun内部类的解决方法

今天在调整一个系统的构建方式,原先是是用eclipse直接构建的,现在要转换为用maven构建。项目目录结构和项目依赖都配置好之后,命令行下编译却有依赖包找不到的错误。[INFO] -------------------------------------------------------------[ERROR] COMPILATION ERROR :[INFO] --------------...

weixin_35778603的博客 584

RK3568笔记九十四:基于QT的YOLOV5目标检测

基于RK3568平台的实时目标检测应用,使用YOLOv5模型和RKNN推理引擎实现摄像头实时目标检测,并通过Qt界面显示检测结果。主要功能实时摄像头目标检测:从摄像头获取视频流,使用YOLOv5模型进行目标检测RKNN推理加速:利用RK3568内置的NPU进行模型推理加速图形界面显示:使用Qt框架构建用户界面,实时显示检测结果RGA图像处理:使用Rockchip Graphic Accelerator进行图像缩放处理。

523

java 找不到内部类_Java内部类

—— 你放心去浪,我替你说谎。一、内部类与外部类之间的关系1、内部类定义于外部类中,是一个相对独立的实体,对该外部类文件进行编译,会产生两个.class文件,其中内部类的.class文件名名称为 外部类名$内部类名.class。2、内部类可以访问外部类的所有方法和属性,即使是私有,这是因为内部类持有一个外部类的一个引用。外部类无法直接访问内部类的属性和方法,必须通过内部类的对象引用才能进行访问,...

weixin_30046591的博客 1108

【docker】--- 详解 WSL2 中的 Ubuntu 和 Docker Desktop 的区别和关系!

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

秋知叶i 1314

C++怎么学?零基础也可以,一份完整学习路线图助你搞定!

提供一条清晰、系统且实践导向的C++学习路径。从基础语法、面向对象、泛型编程、异常处理,逐步深入STL、智能指针、并发编程等现代C++高级特性。无论是新手还是希望提升,通过系统学习与项目实践,助您将理论知识转化为实际解决问题的能力。

Lion_Long的博客 4025

java中的内部类

匿名内部类是没有名称的内部类。在Java中调用某个方法时,如果该方法的参数是接口类型,除了可以传接口实现类外,还可以使用实现接口的匿名内部类作为参数,在匿名内部类中直接完成方法的实现。}}@OverrideSystem.out.println("学生韩梅梅正在吃饭");}}@OverrideSystem.out.println("老师李华正在吃饭");}}}}}}}@OverrideSystem.out.println("学生韩梅梅正在吃饭");}...

yahid的博客 1万+

YOLOv12环境配置,手把手教你使用YOLOv12训练自己的数据集和推理(附YOLOv12网络结构图),全文最详细教程

YOLO 系统尊嘟太卷了吧,YOLOv11 还没完明白,YOLOv12 就重磅来袭,YOLOv12 是由纽约州立大学联合中科院在 2025年2月19 日发布,从 YOLOv12 论文题目我们大概就知道做了那些更新 ,下图是YOLOv12 在 COCO 数据集上的性能表现引入区域注意力机制(area-attention):通过引入十字形窗口自我注意机制,沿水平和垂直条纹计算注意力机制,纵横交错的注意机制。如下图所示,区域注意力采用最多简单的等分方法,将特征地图垂直或水平划分为 L 个区域。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 6万+

Java中的内部类

成员内部类:没有static修饰,定义在外部类的成员位置静态内部类:有static修饰,定义在外部类的成员位置// 成员内部类// 静态内部类特性成员内部类静态内部类静态修饰符无有static外部类实例依赖必须依赖不依赖外部类成员访问可访问所有成员仅可访问静态成员创建方式持有外部类引用是否选择哪种内部类取决于是否需要访问外部类的实例成员:需要则用成员内部类,仅需访问静态成员或完全独立则用静态内部类。

AlbenXie的博客 796

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java 中的内部类

本文详细解释了 内部类 的概念与使用,并深入介绍了 4种内部类 的注意事项和细节。这一部分的知识非常的多且琐碎,而且想要理解好需要较好的面向对象的基础。小白博主已经尽力整理了,希望小伙伴们看后能有所收获!最后,如果本文有什么错漏的地方,欢迎大家批评指正!一起加油!!我们下一篇博文见吧!

林二月的博客 1826

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java找不到内部类_JAVA内部类不被识别!

packagecom.bithelloworld;importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.Button;importandroid.widget.TextView;importandroid.content.Intent;importa...package com.bithelloworld;i...

weixin_34324006的博客 547

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java的4种内部类的使用方式及适用场景

Java中有四种形式的内部类,在开发的过程中需要理清楚何时使用合适的内部类,内部类用好了可以提高编码效率、更好的实现封装、甚至可以巧妙实现多继承。当然,某些内部类用多了会削弱面向对象的设计思想,所以内部类不可滥用,要清楚各种形式内部类的作用和适用场景。

一只猿的自我修养 4130

java内部类有什么作用?

把类定义在另一个类的内部,该类就被称为内部类。

张紫娃的博客 551

什么是内部类

一、内部类概念 内部类(innerclass),就是将一个类定义在另一个类中,内部的类称之为内部类。 例:public class Outer { class Inner{ //代码省略 } } 二、内部类的主要特点 1.内部类可以很好的实现隐藏,可以使用public,private,protected,default. 2.内部类可以直接访问外部类的所有成员,包括私有成员 3.外部类不能直接访问...

肖润军的博客 633

Java内部类详解

java内部类详解---静态内部类、成员内部类、局部内部类、匿名内部类

qq_39350797的博客 664

Java——内部类

成员内部类是定义在另一个类的内部,但在方法外部的类。它可以访问外部类的所有成员(包括私有成员),并且每个成员内部类的实例都与一个外部类的实例相关联 内部类又称为嵌套类,外部类又称为封闭类 Java中内部类分为四类地位类似一般成员属性可看为外部类的一个成员属性,无static修饰,可以使用任何访问修饰符 例 内部类利用外部类的this引用访问外部类成员 常用于内部类与外部类中的变量重名时,如果内部与外部类成员重名,直接通过名字访问成员将访问内部类中成员 2)外部类访问内部类成员 这将涉及到内部类的实例化

2403_89485883的博客 1337

面试 | 说一下你对内部类的认识

内部类是定义在另一个类中的类;下面类B是类A的内部类。即内部类对象引用了实例化该内部对象的外围类对象。 public class A{ class B {} } 为什么需要内部类? 不同的内部类可以满足不同场景下的需要;如在编写回调函数时,利用匿名内部类可以简化代码;局部内部类可以对外部类隐藏自己; 内部类可以分为四种:成员内部类,局部内部类,匿名内部类和静态内部类。 1.成员内部类...

星空下的程序猿 628

成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用

放在一个类的内部的类我们就叫内部类。 一、成员内部类 定义在类内部的非静态类,就是成员内部类。 public class Out { private static int a; private int b; public class Inner { public void print() { System.out...

suncat的博客 3203

java内部类的四大作用

一、内部类的作用 我们为什么需要内部类?或者说内部类为啥要存在?其主要原因有如下几点: 内部类方法可以访问该类定义所在作用域中的数据,包括被 private 修饰的私有数据 内部类可以对同一包中的其他类隐藏起来 内部类可以解决java 单继承的缺陷 当我们想要定义一个回调函数却不想写大量代码的时候我们可以选择使用匿名内部类来实现 举例说明如下: 可以无条件地访问外围类的所有元素 为什么可以引用:内部类虽然和外部类写在同一个文件中, 但是编译完成后, 还是生成各自的class文件,内部类通过this

cristianoxm的博客 7141

Java---内部类的定义与用法

目录 一. 内部类概述 二. 成员内部类 2.1 普通内部类 2.2 静态内部类 三. 局部内部类 四.匿名类 五.对象的打印 一. 内部类概述 内部类是定义在另一个类中的类,内部类也是封装的一种的体现。为什么要使用内部类,主要有两个原因: · 内部类可以对同一个包的其他类进行隐藏。 · 内部类方法可以访问定义这个类的作用域中的数据,包括原本私有的数据。 格式: public class OutClass { class InnerClass { ...

X_H学Java的博客 1396
上一篇: HQL总结 Select new map()
下一篇: Spring Cache简介和使用
java_hch
博客等级 码龄14年 14粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值