Java 版 (精华区)

发信人: wazy (坟), 信区: Java
标  题: java 语言规范(3)
发信站: 紫丁香 (Tue Sep 16 16:13:56 1997)

5. 界面
界面(interface)定义了一组方法,而没有实现其体。界面只提供方法
协议的封装,而不限制实现必须在什么继承树上。当一个类实现界面时,
一般必须实现界面描述的所有方法的体。(如果实现界面的类是抽象类,
它可以把实现界面方法的任务交给它的子类。)
界面解决了因多继承运行时过大开销这类问题。 但由于界面采用动
态方法束定,使用它们的时候在性能上会受到一点影响。
界面允许几个类同时享有一个程序设计界面,而彼此不完全知道对
方具体的实现。下面的例子是一个界面的声明(即用了interface 关键字),
并由一个类实现。
    public interface   Storing {
         void freezeDry (Stream s);
         void reconstitute (Stream s);
    }
    public class Image implement Storing,Painting {
          …
          void freezeDry (Stream s) {
              //排序前按JPEG 压缩图象
          }
          void reconstitute (Stream s ) {
              // 读入前按JPEG 解压缩图象
               …
          }
    }
象类一样,界面也分私有(缺省)和公有。作用域与类相同。界面
内的方法通常是public,变量是public,static 和final的。

5.1界面作为类型
按声明的语法,界面名(interfaceName)和变量名( variableName)
声明的是实现该界面名的某个类的实例变量或参数。当界面作为类型时,
其行为和类作为类型完全一样。它使程序员可指定实现给定界面的对象,
而不必知道该对象的具体类型或继承关系。使用界面可以不必关心共享
公共抽象超类的其它类,或如何在Object中增加方法。
    下面是说明界面名、方法名语法的例子。
    class StorageManager {
        Stream stream;
        … 
        //  Storing 是界面名
        void pickle (Storing obj)  {
            obj. freezeDry (stream);
        }
    }

5.2 界面中的方法
    界面中的方法定义如下:
    returnType   methodName (parameterList);
此声明没有修饰符(modifier)。界面中所有的方法都是公有的(public)
和抽象的(abstract)故无其他修饰符,参见“抽象方法”一节。

5.3 界面中的变量
界面中的变量是final,public或static的,无修饰符,变量必须初
始化。

5.4 组合界面
    利用extends关键字。可以把多个界面组合为一个界面,如:
    interface  DoesItAll  extends String,Painting {
             void doessomethingElse ( );
    }

6. 包
包(Package)由一组类(class)和界面(interface)组成。它是管理大型名
字空间,避免冲突的工具。每一个类和界面的名字都包含在某个包中。
按照一般的习惯,它的名字是由“.”号分隔的单词构成,第一个单词通
常是开发这个包的组织的名称。

6.1 定义一个编译单元的包
编译单元的包由package语句定义。如果使用package语句,编译单
元的第一行必须无空格,也无注释。其格式如下:
package  packageName;
若编译单元无package语句,则该单元被置于一个缺省的无名的包
中。

6.2 使用其它包中的类和界面
在Java语言提供一个包可以使用另一个包中类和界面的定义和实现
的机制。用import关键词来标明来自其它包中的类。一个编译单元可以
自动把指定的类和界面输入到它自己的包中。
在一个包中的代码可以有两种方式来定义来自其它包中的类和界
面:
    * 在每个引用的类和界面前面给出它们所在的包的名字;
      //前缀包名法
       acme. project. FooBar obj=new acme. project. FooBar( );
    * 使用import语句,引入一个类或一个界面,或包含它们的包。引
入的类和界面的名字在当前的名字空间可用。引入一个包时,则该包所
有的公有类和界面均可用。其形式如下:
    // 从 acme.project 引入所有类
      import  acme.project.*;
    这个语句表示acme.project中所有的公有类被引入当前包。
    以下语句从acme. project包中进入一个类Employec_List。
    //从 acme. project而引入 Employee_List
    import  acme.project.Employee_list;
    Employee_List obj = new Employee_List( );
在使用一个外部类或界面时,必须要声明该类或界面所在的包,否
则会产生编译错误。


--
※ 来源:.紫丁香 pclinux.hit.edu.cn.[FROM: zzz.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.936毫秒