A.3 OOP差异
如果不讨论上述3种语言实现OOP机制的差异,这3种面向对象语言的对比就不完整。
A.3.1 类、文件名以及包
ActionScript、Java以及C++(www.cppentry.com)都有其自己的方式来处理类文件以及其中包含类文件的包(如果可应用)。
在ActionScript编程(www.cppentry.com)中,包就是资源树中的一个文件夹。例如,如果在{SRC_ROOT}\com\ wiley\custom中放置有ClassA.as与ClassB.as,这个包就是com.wiley.custom,这些文件中的类将成为该包的组成部分。注意,该类是声明的,而非所有类。这是因为,在ActionScript中,虽然在某个文件中有多个类,但其中只有一个类对该包是公有和可用的。
其他关于ActionScript的注意事项是包中可用的类必须与其包含文件具有相同的名称。换句话说,ClassA.as与ClassB.as文件中将分别有一个同名的ClassA与ClassB类。Java使用包的机制与ActionScript使用它们的机制类似。
ActionScript包不仅允许包含类,而且还允许包含接口、变量、函数、名称空间,以及可执行语句。Java只允许包含类和接口。
与ActionScript和Java不同,C++(www.cppentry.com)完全不同;C++(www.cppentry.com)没有包。在C++(www.cppentry.com)中,可以用喜欢的方式进行命名。同时,只要愿意,可以在单个文件中放置尽可能多的类声明。这意味着,对于C++(www.cppentry.com)开发人员,实际上并没有标准可言,虽然约定针对每个类只创建两个文件。
当使用C++(www.cppentry.com)创建类时,通常会创建一个.h头文件和一个.cpp实现文件。头文件可以认为是一个蓝图文件,因为它包含了类的定义,而实现文件则是实际功能代码存在的地方。这种方法的好处是可以为编译过的.obj实现文件分配各种头文件。这样,使用您的代码的其他开发人员将可以引用他们正在使用的类定义,而无需考虑其实现细节。