1.内部类🎧
1.1 内部类的基本概念🎧
🔎如果一个类定义在另一个类的内部,这个类就叫做内部类。内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。
🔎外部类和内部类的区分是相对的,对于A类来说,B类定义在它的类体里面,所以B类就是A类的内部类,相反,对于B类来说,A类是B类的外部类。外部类对于内部类来说,没有任何优越的访问权限,但是内部类却能通过外部类的对象参数来访问外部类中的所有成员。🔎这两个类依旧是相互独立的,只不过内部类B是外部类A的友元类。
1.1含有内部类的A类对象如何计算字节大小呢?🎧
🔎 将内部类B看成是外部类A的一个友元类,相互独立,内部类无论变量有多少都不会影响外部类,对于外部类来说也同样如此。所以我们sizeofA类对象的时候只会得出A类对象自己的变量总大小。
1.2内部类的特性🎧
1️⃣. 内部类可以定义在外部类的public、protected、private都是可以的。
2️⃣. 注意内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名。
3️⃣. sizeof(外部类)=外部类,和内部类没有任何关系。
1.3内部类的使用场景
1️⃣ .封装和组织代码: 内部类可以用于实现更好的封装,将相关的类组织在一起,使得代码更加清晰和可维护。通过将内部类放置在外部类中,可以在一定程度上隐藏实现的细节。
2️⃣.实现接口或抽象类的多继承: Java中一个类只能继承一个类,但是可以实现多个接口。使用内部类可以实现多继承的效果,通过一个类内部包含多个内部类,每个内部类分别实现一个接口或继承一个抽象类。
3️⃣事件处理: 内部类常常用于处理事件,特别是在图形用户界面(GUI)编程中。通过在内部类中实现事件处理代码,可以轻松地访问外部类的成员变量和方法,同时保持代码的组织结构。
4️⃣.实现迭代器或集合类: 内部类可以用于实现迭代器或集合类,这样可以更方便地访问外部类的私有成员,并且可以隐藏实现的细节。
5️⃣.工厂模式: 内部类可以被用作工厂模式的一部分,尤其是在创建对象时需要访问外部类的实例变量的情况下。内部类可以轻松访问其外部类的私有成员。
6️⃣.私有实现: 如果一个类只在一个地方使用,可以考虑将其作为外部类的内部类,以减少对该类的公开访问。这有助于维护代码的封装性。
2.匿名对象🎧
🔎匿名对象是指在创建对象的同时没有为其分配一个明确的变量。通常,匿名对象仅在创建时使用一次,不会被其他部分的代码引用。匿名对象的特点就是不用取名字,且生命周期很短,几乎只有一行。
🔎这些例子在展示匿名对象的使用方式,但在实际的C++编程中,通常更推荐为对象分配一个有意义的变量名,以提高代码的可读性和维护性。匿名对象的使用应该谨慎,特别是在代码复杂度增加时。