(转载]Java面向对象程序设计之接口应用

Java语言提供了一种接口(接口)机制。这种接口机制使Java的面向对象编程变得更加灵活。我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现。在《思维在Java》一书中,作者对接口有这样的描述:“接口(接口)比抽象(抽象)的概念更进了一步。你可以把一个接口看成是一个纯的抽象类。”我认为作者对接口的这一解释再准确不过了。
理解并用好接口机制将帮助我们更好的掌握Java这种面向对象的编程语言。下面我们来讨论一下接口的使用规则以及相关的应用。[@more@]

一、接口的定义及实现

定义接口和定义类相似,只是要把类关键字换为界面。定义方法时只需要方法名,返回类型和参数列表,不能有方法体。接口中可以定义字段,这些字段都被暗指为静态和决赛,因此应该根据需要先定好这些字段的值。例如:

公共接口可以飞行的{
空飞();
}

公共接口健谈的{
无效交谈();
}

公共接口消息{
int MAX_SIZE=4096;
字符串getMessage ();
}

上面定义的几个接口中,适航的和健谈的只定义了一个方法,而消息里除了方法外还有一个字段MAX_SIZE。可以看出这些接口只定义了类的表现形式,而不包含任何实现,所以不能直接使用。要使用这些接口就需要有相应的类去实现它们。实现接口时应该先在类名后用实现关键字申明将要实现的接口,如果要实现多个接口,应该用逗号将它们隔开,然后一一实现这些接口中定义的方法。如下面的例子:

公共类鹦鹉实现适航的,健谈的{

公共空飞(){
system . out。println(“飞行像一只鹦鹉…”);
}

公共空说话(){
System.out.println(“你好!我是一只鹦鹉!”);
}
}

公共类TextMessage实现信息{
字符串消息;

公共空setMessage(字符串味精){
消息=味精;
如果(message.length ()> MAX_SIZE)
消息=消息。substring (0, MAX_SIZE);
}

公共字符串getMessage () {
返回消息;
}
}

在鹦鹉(鹦鹉)例子中,我们用接口适航的来表示飞行能力,健谈的表示说话能力,但它们并不包含具体实现。而鹦鹉同时具有这两种能力,所以我们为鹦鹉类同时实现了适航的和健谈的这两个接口。同样我们还可以定义一个燕子(燕子)类,但燕子只有飞行能力,所以我们只需要为燕子实现适航的就行了,因为它们各自的的飞行方法有所不同,所以它们有各自关于飞行的具体实现。

另外,正因为一个类可以同时实现多个接口,使得Java的面向对象特性变得非常灵活。运用这种特性,我们可以实现类似c++语言中多继承那样的特性,甚至更灵活的一些特性。下面我们来讨论一下接口在实际中的应用。

二,用接口来定义一些全局变量

因为接口内的字段都是静态和最后的,所以我们可以很方便的利用这一点来创建一些常量。例如:

公共接口的常量{
字符串根="/根";
int MAX_COUNT=200;
int MIN_COUNT=100;
}

在使用时可以直接用常量。根这样的形式来引用其中的常量。我们还可以用下面这种方法来创建初始值不确定的常量。

公共接口RandomColor {
int红色=math . random () * 255;
int绿色=math . random () * 255;
int蓝色=math . random () * 255;
}

其中红色,绿色和蓝色的值会在第一次被访问时建立,然后保持不变。

三,用接口来定义基本数据结构
在设计一套软件系统的初期,我们可以用接口来对一些基本数据元素的特性来进行一些描述,再根据需要进行不同的实现。请大家看看下面这个例子:

公共接口用户{
int getAge ();
字符串getName ();
字符串getPassword ();
}

公共类XMLUser实现用户{
//这里用XML技术实现用户接口中的方法
公共int getAge () {…}
公共字符串getName () {…}
公共字符串getPassword () {…}
}

公共抽象类UserFactory {
公共静态UserFactory getUserFactory () {
返回新XMLUserFactory ();
}

公共用户getUser(字符串名称);公共用户getAdmin
();
公共用户createUser(字符串名称、字符串密码,int年龄);
公共空间addUser用户(用户),
公共空间delUser用户(用户),
}

公共类XMLUserFactory延伸UserFactory {
//这里用XML技术实现的UserFactory的抽象方法
}

在这个例子中,我们定义了一个接口用户和一个抽象类UserFactory。然后我们用XML技术实现这两个类。可以看的出,我们只需要从用UserFactory的getUserFactory()就可以得到一个UserFactory的实例,而不用去考虑这个实例的具体实现方法。通过UserFactory的这个实例我们还可以直接得到用户的实例,也不用去考具体的实现方法。

(转载]Java面向对象程序设计之接口应用