内部类和外部类之间的相互调用

通过两个mark点确定某一个点的位置 read_image (Image0, '0.bmp') binary_threshold (Image0, Region, 'max_separability', 'dark', UsedThreshold) connection (Region, ConnectedRegions) fill_up (ConnectedRegions, RegionFillUp) select_shape_std (RegionFillUp, SelectedRegions, 'max_area', 70) red... 阅读详情

 

内部类:

①静态内部类中可以有非静态的方法

②当内部类中有静态方法或者静态成员变量时,一定是静态内部类

 

一般内部类在外部类的成员变量位置,像这样:

1 public class Outer {
2     class Inner{
3         
4     }
5 }

1、外部类访问内部类:

   内部类被static修饰:可以直接new

    Inner in = new Inner();

   内部类没有被static修饰:得先new出来外部类的实例,再new内部类的

    Inner in = new Outer().new Inner();

2、内部类访问外部类:(外部类.this.变量)

 

复制代码

 1 public class Outer {
 2     int x = 9;
 3     class Inner{
 4         int x = 8;
 5         public void test(){
 6             int x = 7;
 7             System.out.println(x);
 8             System.out.println(this.x);
 9             System.out.println(Outer.this.x);
10             test1();
11         }
12     }
13     
14     private void test1(){
15         System.out.println("test");
16     }
17     public static void main(String[] args) {
18         Inner in = new Outer().new Inner();
19         in.test();
20     }
21 }

复制代码

 

 

 

输出为:7,8,9,test

分析:第七行第八行相信大家都没有什么问题,第九行输出的是9,说明访问到了外部类的变量,而输出的test说明内部类访问到了外部类的test1方法

总结:

  输出是9的原因:因为内部类持有一个外部类的引用,格式:外部类名.this

  可以调用private方法原因是:因为他们在一个类Outer中所以可以调用

3、外部类和内部类中的方法相互访问:

①外部类的静态方法test和非静态内部类的非静态方法voice的相互访问:

   !  test----->voice       先new外类再new内类,再调方法

复制代码

 1 public class Outerclass {
 2     class Inner{
 3         public void voice(){
 4             System.out.println("voice()");
 5         }
 6     }
 7     public static void test(){
 8         new Outerclass().new Inner().voice();
 9     }
10     public static void main(String[] args) {
      //主函数调用test方法
11        test();13     }
14 }

复制代码

输出:voice();


 

   !!  voice----->test        外类.this.方法(持有的外部类的引用)

复制代码

 1 public class Outerclass {
 2     class Inner{
 3         public void voice(){
 4             Outerclass.this.test();
 5         }
 6     }
 7     public static void test(){
 8         System.out.println("test()");
 9     }
10     public static void main(String[] args) {
    //主函数调用voice()
11         Inner in = new Outerclass().new Inner();
12         in.voice();
13     }
14 }

复制代码

 输出:test();

  ②外部类的非静态方法test和静态内部类中的非静态方法voice之间的相互调用

 ! voice------>test

复制代码

 1 public class Outerclass {
 2     static class Inner{
 3         public void voice(){
 4             new Outerclass().test();
 5         }
 6     }
 7     public void test(){
 8         System.out.println("test()");
 9     }
10     public static void main(String[] args) {
    //主函数调用voice()方法
11         new Outerclass.Inner().voice();
12     }
13 }

复制代码

输出:test();

!!  test----->voice

复制代码

 1 public class Outerclass {
 2     static class Inner{
 3         public void voice(){
 4             System.out.println("voice()");
 5         }
 6     }
 7     public void test(){
      //1、其他类访问外部类中的静态内部类的非静态方法
 8        // new Outerclass.Inner().voice();
      //2、此处的Outerclass中的test方法访问静态内部类中的非静态方法
       new Inner().voice();
 9     }
10     public static void main(String[] args) {
      //主函数调用test方法
11         new Outerclass().test();
12     }
13 }

复制代码

输出:voice();

 

4、总结:

外部类访问内部类:必须建立内部类的对象

内部类访问外部类:内部类可以直接访问外部类的成员包括私有成员,因为外部类持有内部类的引用

 

特例:内部类写在外部类的方法中(即局部变量的位置)

  1、内部来外部类均可定义变量/常量

  2、只能被final/abstract修饰

  3、只能访问被final/abstract修饰的变量

  4、可以直接访问外部类中的成员,因为还持有外部类的引用

  

手把手教你用Python+GDAL处理0.5米吉林一号卫星影像(附代码) 本文详细介绍了如何使用Python和GDAL处理吉林一号0.5米高分辨率卫星影像,包括环境配置、数据预处理、分辨率融合、植被指数计算及地物分类等关键步骤。通过实战代码示例,帮助开发者高效处理大尺寸遥感数据,解决资源崩溃和算法选择问题,提升遥感影像分析能力。 阅读详情

相关推荐

Arduino Nano + MCP3422A0 ADC 毫欧表:3档分辨率(0.1mΩ-1.3kΩ)开尔文连接实测

本文详细介绍了如何使用Arduino Nano与MCP3422A0 ADC构建高精度毫欧表,采用四线制开尔文连接和三档量程设计,实现0.1mΩ-1.3kΩ的精确测量。通过精密恒流源和18位ADC技术,结合智能量程切换和数字滤波算法,显著提升测量精度和稳定性,适用于电子维修、PCB测试等场景。

weixin_28292761的博客 323

内部类与外部类之间访问总结

1、内部类可以访问外部类的任何成员。 2、非静态内部类是不能含有静态成员的。 3、外部类中的方法访问内部类中的方法一共分为六种情况 1) 静态外部方法访问静态内部类静态方法,直接使用静态内部类名+ . +静态方法名。 2) 静态外部方法访问静态内部类非静态方法,需要创建静态内部类的实例再调用非静态方法。 3) 静态外部方法访问非静态内部类非静态方法,需要先创建外部类实例,再创建非

qq_15846805的博客 1917

多边形裁剪算法

多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。 Greiner–H...

papalqi 6726

内部类和外部类的调用

//外部类 public class Out{ private int yes = 0; int data = 1 ; //内部类 public class In{ int yes = 2 ; public void print() { System.out.println("外部类yes:" + Out.this.yes );//调用外部类和内部类同名变量或属...

沁心人 2216

基于docker进行安装部署seata,解决Seata的版本与Nacos的版本不匹配

本文分享了在Docker环境下部署Seata时遇到Nacos 3.x API不兼容问题的解决方案。由于Seata 2.0.0内置的nacos-client 1.4.2无法调用Nacos 3.x重构后的接口,导致注册失败。通过下载Seata 2.6.0源码自行构建Docker镜像,并调整启动方式(直接执行Java命令绕过Shell脚本),最终成功实现与Nacos 3.x的集成。关键步骤包括:创建自定义Dockerfile、配置application.yml、处理启动脚本兼容性问题,最终采用java直接运行方案

Dd52698的博客 405

prometheus 从入门到精通(史上最全)

Prometheus(由go语言开发)是一套开源的监控&报警&时间序列(按照时间排序)数据库的组合。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。它可以监控主机,服务,容器,支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。原文链接:https://blog.youkuaiyun.com/qq_45277554/article/details/130917620时间序列数据。

流水_鱼鱼的博客 1万+

Java内部类

Java内部类与常用类内部类内部类的分类内部类的概念成员内部类静态内部类局部内部类匿名内部类常用类Object类getclass类hashcode类型toString类equals方法finalize类包装类包装类的含义包装类对应装箱与拆箱Integer缓冲区String类String常用方法可变字符串BigDecimal类Date类Calendar类SimpleDateFormat类System类总结 内部类 内部类的分类 内部类的概念 成员内部类 使用内部类,必须先创建外部类 当然也可以

只是个人笔记,请见谅 1146

DataWorks PyODPS第三方包全攻略:从打包到加载的完整流程

本文详细介绍了在DataWorks的PyODPS节点中使用第三方Python包的完整流程,包括环境限制、打包工具pyodps-pack的使用、资源上传与加载实战,以及特殊场景处理技巧。通过本文,开发者可以掌握在MaxCompute受限环境中灵活使用自定义依赖的方法,提升数据处理效率。

dd012的博客 986

java静态内部类、外部类、其他类资源调用说明

静态内部类与外部类互相调用。其他类调用静态内部类资源。

qq_44251163的博客 1186

如何使用Docker部署OpenClaw小龙虾(docker compose快速部署)

本文以飞牛NAS为例💻,带大家一步步完成Docker部署OpenClaw小龙虾🦞。不管你是用NAS、云服务器还是本地电脑,只要支持Docker,都可以参考这个步骤来安装部署⚡

XiaoqiangClub的博客 724

VSCode 中搭建 Python 开发环境

**验证安装**:打开终端(CMD/PowerShell/终端),输入 `python --version`(Windows)或 `python3 --version`(macOS/Linux),显示版本号即成功。- **下载地址**:[Python 官网](https://www.python.org/downloads/)(选择对应系统的最新稳定版,推荐 3.8+)- **调试**:通过 `launch.json` 配置,设置断点后按 `F5` 启动,使用 `F10/F11` 控制流程。

寒寒豆豆软件公司的博客 2534

内部类和 外部类相互访问

内部类: ①静态内部类中可以有非静态的方法 ②当内部类中有静态方法或者静态成员变量时,一定是静态内部类 1、外部类访问内部类:    内部类被static修饰:可以直接new     Inner in = new Inner();    内部类没有被static修饰:得先new出来外部类的实例,再new内部类的     Inner in = new Outer().n...

weixin_30685029的博客 623

系统安装(kuntaiR522 kvm安装)

鲲泰R522服务器kvm安装rocky

weixin_46396917的博客 1818

java 外部类的调用内部类_内部类和外部类之间的相互调用

内部类:①静态内部类中可以有非静态的方法②当内部类中有静态方法或者静态成员变量时,一定是静态内部类一般内部类在外部类的成员变量位置,像这样:1 public classOuter {2 classInner{34 }5 }1、外部类访问内部类:内部类被static修饰:可以直接newInner in = new Inner();内部类没有被static修饰:得先new出来外部类的实例,再n...

weixin_32298151的博客 3060

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

外部类和内部类之间相互调用

内部类:①静态内部类中可以有非静态的方法②当内部类中有静态方法或者静态成员变量时,一定是静态内部类一般内部类在外部类的成员变量位置,像这样: 1、外部类访问内部类:   内部类被static修饰:可以直接new    Inner in = new Inner();   内部类没有被static修饰:得先new出来外部类的实例,再new内部类的    Inner in = new Outer().new Inner();2、内部类访问外部类:(外部类.this.变量) 输出为:7,8,9,test分析

listeningdu的博客 1924

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python嵌套类(内部类相互调用)_在python中从内部类访问外部类

也许我很生气,但这看起来确实很简单-问题是让你的内部类在外部类的方法中。。。def do_sthg( self ):...def messAround( self ):outerClassSelf = selfclass mooble():def do_sthg_different( self ):...outerClassSelf.do_sthg()另外……”“self”仅用于约定,因此您可以这...

weixin_30451613的博客 1494

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

浅谈附属类,内部类,匿名内部类,静态内部类

一、附属类 附属类只能用默认的访问修饰符,没有静态附属类 二、内部类 1、内部类一般定义成private,直接在类中其他方法中调用; 2、内部类地位可以想象成类中的方法,内部类可以随意使用外部类的成员变量;public class A { private String name = "张三"; private static int num = 001; public

wangdajiao的博客 727

创建内部类的实例方法

方法1:在外部类类初始化内部类实例 class Start { public static void main(String [] args) { MyOuter outer=new MyOuter(); outer.doStuff(); } } class MyOuter { private int x;//外部有个私有的x实例变量 MyInner inner=ne

leafinsnowfield的专栏 4745

Java内部类详解

Java内部类的概念 Java支持在一个类中定义另一个类,这样的类就是内部类。通俗来说,就是在类A(或者类A的某一个方法)中定义一个类B,那么类B就是类A的内部类(内嵌类),类A是类B的外部类(外嵌类)。 Java内部类创建的一般格式 [public] class 外部类 { /* * 外部类的成员变量和成员方法 */ //内部类定义 [访问控制符] [修饰符] class ...

qq_44848423的博客 418

内部类、装箱和拆箱

public class Test { // 测试成员内部类 public static int i = 1; private static int ii = 1; private int a = 97; public int aa = 65; public static void add(){ System.out.println("私有静态方法"); } public static void sub(){ S.

qq_52807480的博客 160

成员内部类

成员内部类 如果一个事物的内部包含另一个事物,那么这就是一个类内部包含另一个类 内部类分类 1、成员内部类 2、局部内部类(包括匿名内部类) 成员内部类的定义格式: 修饰符 class 外部类名称{ 修饰符 class 内部类名称{ } } 注意:外部类调用内部类,必须通过内部类的对象来进行调用 ​ 内部类调用外部类,可以随意调用 成员内部类方法的使用 1、间接使用:在外部类的方法中,使用内部类,然后在main中调用外部类的方法来实现内部类的调用

qq_51788611的博客 609

Java基础学习——内部类(2)

使用.this和.new 如果需要生成对外部类对象的引用,可以使用外部类的名字后边跟着圆点和this。 public class DotThis{ void f(){Syetem.out.println("DotThis.f()");} public class Inner{ public DotThis outer(){ return DotThis.this;

记录点滴成长...... 273

内部类

内部类 1.什么是内部类? 概念:定义在类中的类 2.怎么用的? 就像在类中定义属性一样 修饰符 class 类名{} 第一:内部类相当于是外部类中的一个属性 第二:内部类本身也就是一个类,跟正常的类一样 3.为什么要用它? 类的生命周期程序运行时开始到程序结束时销毁,但是呢,某些情况下,在整个应用程序中对该类的使用频率较低,那此时就需要将其定义为内部类,以缩短其生命周期; 简单点来说:缩短类的生命周期 划分:内部类、局部内部类、匿名内部类 使用场景:当类或该类的对象并不是很常用的时候,就可以定义为内部类

qq_52232797的博客 173

Java 内部类

Demo.java public class Demo { public static int num=4; static class Inner{ void method(){ System.out.println("num="+num); } } void show(){ Inner in=new Inner(); in.method(); } }

CXZHAOYANG12的专栏 837

Java学习第九天

Java学习第九天知识盲点 2021/7/16第九天 1、创建内部类对象格式: 外部类名.内部类名 对象名 = new 外部类型().new 内部类型(); 外部类名.内部类名 对象名 = 外部类对象名.new 内部类型(); 2、无关类调用内部类,在外部类方法中new一个内部类对象 或 创建内部类对象 3、内部类可以直接调用外部类方法、对象。外部类调用内部需要new内部类对象 4、如果有重名,就近原则,this.a(本类中),外部类名.this.a(外部类中) 5、局部内部类(只使用一次)不能有修饰符。

qq_42788363的博客 112
上一篇: Flink实战之StreamingFileSink如何写数据到其它HA的Hadoop集群
下一篇: JAVA中写时复制(Copy-On-Write)Map实现
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值