接口(interface)和内部类(inner class)为我们提供了一种用来组织和控制系统中的对象的
更加精致的方法。
C++就不包含这些机制,尽管聪明的程序员可以自己去模拟实现它们。在 Java 中存在着这
些机制的事实表明它们是如此重要,以至于要通过语言中的关键字直接提供对它们的支持。
在第 7 章中,你已经学习过了有关 abstract 关键字的知识,它允许你在一个类中创建一个或
多个没有任何定义的方法——你提供了接口部分,但是没有提供任何相应的具体实现,这些
实现是由此类继承者创建的。interface 这个关键字产生了一个完全抽象的类,它根本就没有
提供任何具体实现。你将学习到接口不仅仅只是一个极度抽象的类,因为它允许你通过创建
一个能够被向上转型为不止一种基类型的类,来实现一种 C++多重继承(multiple inheritance)
的变种。
乍看起来,内部类就像是一种简单的代码隐藏机制:你将某些类置于另外一些类的内部。然
而,你将认识到内部类能够比这做得更多——它了解它的外围类(surrounding class),并且
能够与之通信。尽管对多数人来说,内部类还是个新概念,但是那种你可以编写的带有内部
类的代码仍然显得更加雅致和清晰。当然,要想让使用内部类进行设计使人觉得轻松自在,
还是得花些功夫的。
更加精致的方法。
C++就不包含这些机制,尽管聪明的程序员可以自己去模拟实现它们。在 Java 中存在着这
些机制的事实表明它们是如此重要,以至于要通过语言中的关键字直接提供对它们的支持。
在第 7 章中,你已经学习过了有关 abstract 关键字的知识,它允许你在一个类中创建一个或
多个没有任何定义的方法——你提供了接口部分,但是没有提供任何相应的具体实现,这些
实现是由此类继承者创建的。interface 这个关键字产生了一个完全抽象的类,它根本就没有
提供任何具体实现。你将学习到接口不仅仅只是一个极度抽象的类,因为它允许你通过创建
一个能够被向上转型为不止一种基类型的类,来实现一种 C++多重继承(multiple inheritance)
的变种。
乍看起来,内部类就像是一种简单的代码隐藏机制:你将某些类置于另外一些类的内部。然
而,你将认识到内部类能够比这做得更多——它了解它的外围类(surrounding class),并且
能够与之通信。尽管对多数人来说,内部类还是个新概念,但是那种你可以编写的带有内部
类的代码仍然显得更加雅致和清晰。当然,要想让使用内部类进行设计使人觉得轻松自在,
还是得花些功夫的。