首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在内部类的扩展函数中使用限定this访问外部范围

是指在一个类的内部定义了另一个类,并且在内部类的扩展函数中使用了限定this关键字来访问外部类的成员。

内部类是指在一个类的内部定义的另一个类。它可以访问外部类的成员,包括私有成员。内部类可以分为成员内部类、局部内部类和匿名内部类等几种类型。

在内部类的扩展函数中使用限定this访问外部范围的优势是可以方便地访问外部类的成员,尤其是私有成员,避免了对外部类成员的直接暴露,提高了代码的封装性和安全性。

应用场景:

  1. 在一个类中需要定义一个辅助类来完成某些特定的功能,且该辅助类只在该类内部使用,可以考虑使用内部类。
  2. 需要访问外部类的私有成员或方法,可以使用内部类的扩展函数来实现。

推荐的腾讯云相关产品和产品介绍链接地址: 腾讯云函数(云原生应用开发):https://cloud.tencent.com/product/scf 腾讯云数据库(数据库服务):https://cloud.tencent.com/product/cdb 腾讯云服务器(云服务器):https://cloud.tencent.com/product/cvm 腾讯云安全加速(网络安全):https://cloud.tencent.com/product/ddos 腾讯云音视频处理(音视频处理):https://cloud.tencent.com/product/mps 腾讯云人工智能(人工智能):https://cloud.tencent.com/product/ai 腾讯云物联网(物联网):https://cloud.tencent.com/product/iotexplorer 腾讯云移动开发(移动开发):https://cloud.tencent.com/product/mobiledv 腾讯云对象存储(存储):https://cloud.tencent.com/product/cos 腾讯云区块链(区块链):https://cloud.tencent.com/product/baas 腾讯云虚拟专用网络(网络通信):https://cloud.tencent.com/product/vpc 腾讯云游戏多媒体引擎(多媒体处理):https://cloud.tencent.com/product/gme 腾讯云元宇宙(元宇宙):https://cloud.tencent.com/product/metaverse

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Java SE】类和对象

private:只有自己知道,其他人都不知道 【注意】: default权限指:什么都不写时默认权限 访问权限除了可以限定成员可见性,也可以控制类可见性 这些访问修饰限定符,只是在权限上进行了限制...如果想在内部类使用外部类data1,则修改代码: 类名.this.外部类成员 即可 【注意事项】 外部类任何成员都可以在实例内部类方法中直接访问 实例内部类所处位置与外部类成员位置相同...,因此也受public、private等访问限定约束 在实例内部类方法访问同名成员时,优先访问自己,如果要访问外部类同名成员,必须:外部类名 称.this.同名成员 来访问 实例内部类对象必须在先有外部类对象前提下才能创建...实例内部类非静态方法包含了一个指向外部类对象引用 外部类,不能直接访问实例内部类成员,如果要访问必须先要创建内部类对象。...外部类非静态成员,需要通过外部类对象引用才能访问

43520

c++类与对象(五):友元、内部类、临时对象、匿名对象

_day; return in; } 说明: 友元函数访问私有和保护成员,但不是类成员函数 友元函数不能用const修饰 友元函数可以在类定义任何地方声明,不受类访问限定符限制 一个函数可以是多个类友元函数...内部类是一个独立类,它不属于外部类,更不能通过外部类对象去访问部类成员。 外部类对内部类没有任何优越访问权限 内部类构造函数不能直接初始化外部类对象。...如果需要在内部类使用外部类对象,应该使用指针或者引用。..._a << endl;//访问外部类私有变量 } private: int _b; }; private: int _a; }; 其实B就是一个普通类,只是受A类域和访问限定符限制,...注意内部类可以直接访问外部类static成员,不需要外部类对象/类名。 sizeof(外部类)=外部类,和内部类没有任何关系 3.临时对象 临时对象是指在表达式创建、没有被显式命名对象。

22610
  • 访问权限控制

    访问权限控制又称「隐藏具体实现」,也就是说,我们可以通过它来决定某个类或者类成员在程序可见范围。...例如,被修饰为 public 元素在全局范围可见,而被修饰为 private 元素只能可见于类内部。 Java 访问权限控制提供了四种不同访问权限限定词,用于描述元素在程序可见范围。...类访问修饰符 对于类而言,Java 只允许使用两种访问权限限定符进行修饰。...,并不包含内部类外部类只允许使用 public 和默认修饰符对类进行访问限定,而内部类会宽泛很多,我们以后再做详细描述。...函数 PublicClass 类位于同一个包下 而 private 修饰 tel 属性则不可见,说明 private 不允许外部任何位置访问该属性,即便你是我子类也不行 而同样代码,我们置放于另一个包

    2.6K50

    【Android Gradle 插件】Gradle 扩展属性 ② ( 定义在根目录 build.gradle 扩展属性 | 使用 rootProject.扩展属性名访问 | 扩展属性示例 )

    文章目录 一、定义在根目录 build.gradle 扩展属性 二、扩展属性示例 Android Plugin DSL Reference 参考文档 : Android Studio 构建配置官方文档...添加构建依赖项 参考文档 : https://developer.android.google.cn/studio/build/dependencies 一、定义在根目录 build.gradle 扩展属性...Android 工程根目录下 build.gradle 构建脚本 , 则所有的 Module 模块下 build.gradle 都可以获取到该扩展属性值 ; 在 Module 下 build.gradle...可以使用 rootProject.扩展属性名 来访问定义在根目录 build.gradle 定义扩展属性值 ; 二、扩展属性示例 ---- 在根目录下 build.gradle 定义扩展属性...: // 定义扩展属性 , 其中变量对所有子项目可见 ext { hello1 = 'Hello World1!'

    2.9K20

    读书笔记 | 类使用 | Effective Java 3

    扩展时候需要修改源文件,新增 Shape 标签类型和面积计算 case 分支逻辑 初始化错误的话,final 类型后续无法修改,必须通过外部入参强校验才能保证业务逻辑正确性 图形标签类型多了之后...,在Main中使用则不需要加上外部类限定 Main.NestClass nestClass = new Main.NestClass(); 内部类:内部类不能定义任何静态东西 非静态成员类:在类里面...不能访问外层方法本地变量。除非变量是 final,或是数组形式(不受编译器控制) 如果内部类名称和外面能访问名称相同,则会把名称覆盖掉。...可以访问外部类成员 不能访问该方法局部变量,除非是 final 局部变量。...在非静态成员类实例方法,可以调用宿主实例上方法,或者使用限定构造获得对宿主实例引用。

    38120

    C++为什么有参数依赖查找(ADL)?

    作为变量名// 访问类类型,需要使用作用域运算符MyType::MyType instance; // 正确,访问类MyType非限定名称查找非限定名称查找是指在名字没有出现在域运算符::右边情况下...类定义:在类定义任何位置使用名称时,会搜索类定义本身、其基类、嵌套类定义等 类体内查找:如果在类定义中使用了一个名称,首先会在该类定义范围内查找,直到使用该名称位置。...嵌套类查找:如果当前类是嵌套在另一个类,查找会扩展到包含这个嵌套类外部类定义。同时,也会查找外部类所有基类。...局部类查找:如果类是局部(即在函数或代码块内定义),或者嵌套在另一个局部类,查找会在定义该类代码块范围内进行,直到类定义点。...在类外部定义友元函数,其查找规则与命名空间中函数相同。限定名称查找限定名称查找用于处理在作用域解析操作符::右侧出现名称。

    10410

    【Java】内部类

    实例内部类所处位置与外部类成员位置相同,因此也受public、private等访问限定约束。...在实例内部类方法访问同名成员时,优先访问自己,如果要访问外部类同名成员,必须:外部类名称.this.同名成员 来访问 实例内部类对象必须在现有外部类对象前提下才能创建。...实例内部类非静态方法包含了一个指向外部类对象引用。 外部类,不能直接访问实例内部类成员,如果要访问必须要先创建内部类对象。...:被static修饰成员内部类 static class InnerClass{ public void methodInner(){ //在内部类只能访问外部类静态成员...2.4局部内部类 定义在外部类方法体或者{},该种内部类只能在其定义位置使用,一般使用非常少,此处简单了解下语法格式。

    10910

    【Java探索之旅】内部类 静态、实例、局部、匿名内部类全面解析

    在 Java ,可以将一个类定义在另一个类或者一个方法内部,前者称为内部类,后者称为外部类,并且内部类可以访问外部类所有成员,包括私有成员。。...所以在调用外部类成员时需要实例化对象, System.out.println(sout1.a2);//在内部类是可以访问外部类私有成员即private修饰成员...实例内部类所处位置与外部类成员位置相同,因此也受public、private等访问限定约束 在实例内部类方法访问同名成员时,优先访问自己,如果要访问外部类同名成员,必须:外部类名称.this....同名成员 来访问 实例内部类对象必须在先有外部类对象前提下才能创建 实例内部类非静态方法包含了一个指向外部类对象引用 外部类,不能直接访问实例内部类成员,如果要访问必须先要创建内部类对象...1.4 局部内部类 局部内部类是在一个方法或者代码块内部定义部类。局部内部类作用范围仅限于所在方法或代码块内部,外部无法访问局部内部类

    21210

    那些你不知道类和对象知识

    静态成员也是类成员,受public、protected、private 访问限定限制 静态成员变量和静态成员函数主要用途包括: 对象计数器:可以使用静态成员变量来实现某个类对象计数功能。...友元函数不能用const修饰 因为友元函数不属于类,所以不受public,private等访问限定符影响,只是一个声明,在类哪出现都可以...._day << endl;//是外部类天生友元,可以访问外部类私有成员 a = 5;//可以直接访问外部类静态成员变量 } }; }; int Date::a = 3; 内部类特点:...内部类可以定义在外部类public、protected、private皆可,访问时受域作用限定限制....外部类并不是包括内部类,即sizeof(外部类)=外部类,内部类只是在外部类类域中定义,并不占空间. 内部类可以直接访问外部类static成员,不需要外部类对象/类名。

    19820

    Java学习笔记:深入理解嵌套类和内部类

    其中inner类又可分为三种: 其一、在一个类(外部类)中直接定义部类; 其二、在一个方法(外部类方法)定义部类; 其三、匿名内部类。下面,我将说明这几种嵌套类使用及注意事项。...StaticTest(); staticTest.printInfo(); } } 在静态嵌套类内部,不能访问外部类非静态成员,这是由Java语法"静态方法不能直接访问非静态成员"所限定。...若想访问外部类变量,必须通过其它方法解决,由于这个原因,静态嵌套类使用很少。...同时注意,内部静态类Person只在类StaticTest 范围内可见,若在其它类引用或初始化,均是错误。...同时,内部类变量成员只在内部内内部可见,若外部类或同层次部类需要访问,需采用示例程序方法,不可直接访问部类变量。

    68020

    【C++】类和对象 (下篇)

    和 ostream 对象引用; 友元函数总结: 友元函数访问私有和保护成员,但不是类成员函数; 友元函数不能用 const 修饰; 友元函数可以在类定义任何地方声明,不受类访问限定符限制...,这个类就叫做内部类;内部类是一个独立类,它不属于外部类,更不能通过外部类对象去访问部类成员;外部类对内部类没有任何优越访问权限; class A { public: A(int a = 0...: int _a; }; 内部类有如下特性: 内部类天生就是外部类友元,所以内部类可以通过外部类对象参数来访问外部类所有成员;但外部类不是内部类友元; 内部类定义在外部类 public...、protected、private 处都是可以,但是内部类实例化对象时要受到外部类类域和访问限定限制; 内部类可以直接访问外部类static成员,不需要外部类对象/类名; 内部类是一个独立类...,它不属于外部类,所以 sizeof (外部类) == 外部类; 内部类在C++很少被使用,在Java中使用频繁,所以大家只需要了解有这个东西即可; class A { public: A(int

    48100

    java内部类深入详解 内部类分类 特点 定义方式 使用

    本文关键词: java内部类部类分类 特点  定义方式 使用   外部类调用内部类 多层嵌套内部类  内部类访问外部类属性  接口中部类  内部类继承  内部类覆盖  局部内部类 成员内部类...,内存地址是相同 外部类作用域之外,可以使用  outerClass.innerClass  方式引用内部类 可以对同一个包其他类隐藏 内部类可以声明为私有的 每个类都会产生一个.class文件,...访问说明符,作用域被限定在了声明这个局部内部类中了 很好理解,局部就跟方法变量一样,限定在了{}之中,自然就不需要设置访问说明符了,而且你可以想下,也只有类以及类成员有访问修饰符,局部变量有访问修饰符么...局部类可以对外面完全隐藏起来,即使是外部类其他代码也不能访问他 局部内部类虽然被限定在局部代码块{} 里面,但是他也是可以访问外部类属性,不要被分类迷惑了 匿名内部类 匿名内部类就是局部内部类进一步隐藏...,需要调用父类构造方法 所以会打印A  constructor  然后构造方法创建C对象,然后是A ....C  constructor   显然,这并不是B类C 所以说: 两个类之间继承,不存在内部类被覆盖情况

    48610

    C++类和对象(终篇)

    静态成员也是类成员,受public、protected、private 访问限定限制 友元 友元提供了一种突破封装方式,有时提供了便利。...说明: 友元函数访问私有和保护成员,但不是类成员函数 友元函数不能用const修饰 友元函数可以在类定义任何地方声明,不受类访问限定符限制...内部类是一个独立类, 它不属于外部类,更不能通过外部类对象去访问部类成员。外部类对内部类没有任何优越 访问权限。...注意:内部类就是外部类友元类,参见友元类定义,内部类可以通过外部类对象参数来访 问外部类所有成员。但是外部类不是内部类友元。 特性: 1....内部类可以定义在外部类public、protected、private都是可以。 2. 注意内部类可以直接访问外部类static成员,不需要外部类对象/类名。

    8910

    -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态

    s = new Student();在内做了哪些事情?   ...访问特点:   •内部类可以直接访问外部类成员,包括私有成员。   •而外部类访问部类成员必须要建立内部类对象。...成员内部类 局部内部类部类定义在成员位置上 •可以被private static成员修饰符修饰。 •被static修饰部类只能访问外部类静态成员。...(); 内部类定义在局部位置上 •也可以直接访问外部类成员。...•同时可以访问所在局部局部变量,但必须是被final修饰。 内部类访问外部类属性 外部类名称.this.属性名 匿名内部类 就是内部类简化写法。

    68910

    java(4)-深入理解java嵌套类、内部类以及内部类builder构建构造函数六、使用 builder 模式解决构造方法参数过多情况

    提高封装性:给定两个类A和B,如果需要访问A类私有成员,则可以将B类封装在A类,这样不仅可以使得B类可以访问A类私有成员,并且可以在外部隐藏B类本身。 减少代码编写量。...,这是由Java语法"静态方法不能直接访问非静态成员"所限定。...若想访问外部类变量,必须通过其它方法解决,由于这个原因,静态嵌套类使用很少。...2、内部类可以直接访问外部类数据成员和方法。...同时,内部类变量成员只在内部内内部可见,若外部类或同层次部类需要访问,需采用示例程序方法,不可直接访问部类变量。 四、方法内部类  顾名思义,把类放在方法内。

    1.6K10

    Java基础系列(三十):局部内部类,匿名内部类

    What 局部内部类就是定义在某个方法内部部类,它作用域仅限于这个方法。 Why 当我们在外围类定义部类仅仅在某个方法中使用了一次,这种情况下,我们就可以选择去使用局部内部类。...public或者private访问修饰符进行声明,因为它作用域仅仅被限定在声明这个局部类。...局部类有一个优势,它可以对外部世界完全隐藏,即使他外部类其他模块也不可以访问它,除了start方法以外,没有任何方法知道这个内部类存在。...外部方法访问变量(进阶) 与其他部类相比,局部类还有一个其他内部类所不具备有优点。...它不仅可以访问包含它们外部类,还可以访问局部变量,但是这些局部变量必须声明为final,它们一旦被赋值,就不能被改变。

    74130

    Java基础系列(二十九):基本内部类

    What 内部类定义很简单,正如它名字所言,它是定义在另一个类类。 Why 1. 内部类方法可以访问该类定义所在作用域中数据,包括私有的数据。 2....内部类可以对同一个包其他类隐藏起来。 3. 当想要定义一个回调函数且不想编写大量代码时候,使用匿名内部类比较便捷。...实际上,内部类对象有一个隐式引用,它指向了创建它外部类对象,这个引用在是在内部类默认构造器中去设置,我们如果没有为内部类定义构造器,编译器就会去给这个内部类添加一个默认构造器,类似于这样:...,这个flag值是怎么从外围类一步一步走到了内部类方法并加以使用。...listener = otherObj.new TestListener(); 这里需要注意一点,我们可以在内部类声明一个静态域,但是这个静态域必须是final关键词来修饰,因为我们希望一个静态域只有一个实例

    35730

    <补充:内部类&匿名内部类

    外部类任何成员都可以在实例内部类方法中直接访问 2. 实例内部类所处位置与外部类成员位置相同,因此也受public、private等访问限定约束 3....外部类,不能直接访问实例内部类成员,如果要访问必须先要创建内部类对象。...:被static修饰成员内部类 static class InnerClass{ public void methodInner(){ // 在内部类只能访问外部类静态成员...在静态内部类只能访问外部类静态成员。 如果确实想访问外部类普通成员,我们该如何做? 我们可以在静态内部类实例化外部类对象。通过这个对象来访问外部类普通成员 2....创建静态内部类对象时,不需要先创建外部类对象 ③局部内部类(几乎不用) 定义在外部类方法体或者{},该种内部类只能在其定义位置使用,一般使用非常少,此处简单了解下语法格式。

    13610

    JVM学习第三天(JVM执行子系统)之开篇Class类文件结构

    Java跨平台基础: 各种不同平台虚拟机与所有平台都统一使用程序存储格式——字节码(ByteCode)是构成平台无关性基石,也是语言无关性基础。...Java虚拟机不和包括Java在内任何语言绑定,它只与“Class文件”这种特定二进制文件格式所关联,Class文件包含了Java虚拟机指令集和符号表以及若干其他辅助信息。...使用魔数而不是扩展名来进行识别主要是基于安全方面的考虑,因为文件扩展名可以随意地改动。文件格式制定者可以自由地选择魔数值,只要这个魔数值还没有被广泛采用过同时又不会引起混淆即可。...类索引用于确定这个类限定名,父类索引用于确定这个类父类限定名。...字段表集合不会列出从超类或者父接口中继承而来字段,但有可能列出原本Java代码之中不存在字段,譬如在内部类为了保持对外部类访问性,会自动添加指向外部类实例字段。

    37010
    领券