多重继承之内部类

本文详细介绍了内部类的概念,包括为什么使用内部类、内部类的语义及局部内部类和匿名内部类的特性。内部类允许实现多重继承,提供了封装和访问控制的额外优势。局部内部类用于辅助解决问题,而匿名内部类则常用于简洁的接口实现。在创建内部类对象时,通常需要外部类的引用,但在静态嵌套类中则无需此依赖。
摘要由CSDN通过智能技术生成

定义

将一个类的定义放在另一个类的内部,这就是内部类。

为什么使用内部类

一般来说,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类的对象。

每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类没有影响。

使用内部类可以继承对某个具体的或抽象的类的能力,使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了“多重继承”。

内部类允许继承多个非接口类型(类或抽象类)。如果拥有的是抽象的类或具体的类,而不是接口,那就只能使用内部类才能实现多重继承。

语义

  1. 在外围类的方法里使用内部类,与使用其他的类没什么不同。

  2. 外围类的方法返回一个指向内部类的引用。如果想要在外部类的静态方法之中的任意位置创建某个内部类的对象,必须指明对象的类型:
    OuterClassName.InnerClassName

  3. 内部类与向上转型

    • 内部类可以转型为其基类和接口。内部类–某个接口的实现–对于其他人来说是完全不可见且不可用的。

    • 内部类可以被声明为protect或private, 而普通类只可以赋予public和包访问权限。

局部内部类和匿名内部类

使用局部类而不使用匿名内部类的唯一理由是,需要不止一个该内部类的对象。

为什么使用?
  • 实现某类型的接口,创建并返回对其的引用
  • 创建一个类来辅助你的解决方案,但是不希望这个类是公共可见的
局部内部类

在方法的作用域内创建一个完整的类,叫做局部内部类。

局部内部类是方法的一部分,而不是外围类的一部分。所以,在同一个目录下的任意类中对某个内部类使用与局部内部类相同的类标识符,不会有命名冲突。而在此方法之外是不能访问它的局部内部类的。

匿名内部类

1) 缺省参数

public
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值