首页
学习
活动
专区
工具
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.同名成员 来访问 实例内部类对象必须在先有外部类对象前提下才能创建...实例内部类非静态方法包含了一个指向外部类对象引用 外部类,不能直接访问实例内部类成员,如果要访问必须先要创建内部类对象。...外部类非静态成员,需要通过外部类对象引用才能访问

42120

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

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

17610

访问权限控制

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

2.5K50

【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 局部变量。...在非静态成员类实例方法,可以调用宿主实例上方法,或者使用限定构造获得对宿主实例引用。

35320

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

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

14610

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

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

18120

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

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

63420

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

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

45200

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

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

46810

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

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

67310

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

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

1.5K10

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

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

71830

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

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

34630

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

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

35710

【C++】类与对象理解和学习(下)

、private 访问限定限制 我们通过如下案例来更好理解: 不仅如此,静态成员函数不可以访问类成员变量,但是,类成员函数可以访问静态成员变量!...即a是b友元,b是c友元,但是这里a不是c友元 友元函数可以在类定义任何地方声明,不受类访问限定符限制 友元函数不能用const修饰 一个函数可以是多个类友元函数 友元函数调用与普通函数调用原理相同...先来看以下它特点 天生就是外部类友元,即内部类可以访问外部类私有成员变量 独立存在,不参与计算外部类大小。...受类访问限定限制,如果定义在private里,则无法被直接调用 对于外部类static成员变量,内部类可以直接使用,不需要外部类对象/类名。..._b << endl;//可以访问外部类私有成员变量 cout << _a << endl;//直接使用static成员 } private:

46130

C++从入门到精通——类作用域及类实例化

前言 类作用域是指类定义变量和方法可见性和可访问范围。在类内部,所有成员(包括属性和方法)都具有类作用域,意味着它们可以在类任何方法中被访问。...私有作用域(private):私有作用域成员变量和方法只能在类内部被访问和调用,无法被外部类或子类直接访问。私有作用域成员只能被本类其他方法使用。...受保护作用域(protected):受保护作用域成员变量和方法可以在类内部和子类中被访问和调用。受保护作用域成员不能被外部类直接访问。...这是因为类定义包含了类成员变量、成员函数以及其他元数据信息,这些信息需要在内存储以供程序在运行时使用。 类成员变量在内按照定义顺序进行存储,每个成员变量占据一定内存空间。...成员函数代码也需要在内存储,以便可以被调用执行。其他元数据信息如类名、类继承关系、访问控制等也需要在内存储。 即使没有实例化类对象,也可以通过类名来访问静态成员变量和函数

16410

【C++干货基地】面向对象核心概念 static成员 | 友元 | 内部类 | 匿名对象

比如说在类私有的成员变量只有成员函数可以放其他函数是不能访问但是使用了友元函数声明了之后,进行声明类中就可以去访问我们私有成员了。...但是实际使用cout需要是第一个形参对象,才能正常使用。所以要将operator<<重载成 全局函数。但又会导致类外没办法访问成员,此时就需要友元来解决。operator>>同理。...内部类是一个独立类, 它不属于外部类,更不能通过外部类对象去访问部类成员。外部类对内部类没有任何优越 访问权限。...内部类是一个独立类所含有内部类类再计算时不计算它部类 3.2 内部类特性 内部类就是外部类友元类,参见友元类定义,内部类可以通过外部类对象参数来访 问外部类所有成员。...注意内部类可以直接访问外部类static成员,不需要外部类对象/类名。 sizeof(外部类)=外部类,和内部类没有任何关系。

3100

C++心决之类和对象详解(下篇)(封装进阶篇)

,但不是类成员函数 友元函数不能用const修饰(友元函数并不是类成员函数,类成员函数中有this指针,this指针才需要被const修饰)(非成员函数不允许使用类型限定符) 友元函数可以在类定义任何地方声明...,不受类访问限定符限制 一个函数可以是多个类友元函数 友元函数调用与普通函数调用原理相同 3.2 友元类 友元类所有成员函数都可以是另一个类友元函数,都可以访问另一个类非公有成员。...内部类 概念: 如果一个类定义在另一个类内部,这个内部类就叫做内部类 。内部类是一个独立类,它不属于外部类,更不能通过外部类对象去访问部类成员。...外部类对内部类没有任何优越访问权限。 注意: 内部类就是外部类友元类 ,参见友元类定义,内部类可以通过外部类对象参数来访问外部类所有成员。但是外部类不是内部类友元。...内部类可以定义在外部类public、protected、private都是可以。 2. 注意内部类可以直接访问外部类static成员,不需要外部类对象/类名。

7910
领券