第七章抽象类和接口 二、

 

二、接口的基本概念                                             

    接口可以说是Java程序设计中最重要的概念之一了,“面向接口编程”是面向对象世界的共识,所以深刻理解并熟练应用接口是每一个学习Java编程人员的重要任务

 

1.接口概念                                                                             

Java可以创建一种称作接口(interface)的类,在这个类中,所有的成员方法都是抽象的,也就是说它们都只有定义而没有具体实现,接口是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。定义接口的语法格式如下:

访问修饰符 修饰符 interface  接口名称 {

       属性集(常量集)

       抽象方法集

}

示例程序:Runner.java

public interface Runner {

       int ID = 1;            //常量

       public void start();     //三个抽象方法,public都可以省去

       public void run();

       public void stop();

}

目前看来接口和类差不多。确实如此,接口本就是从抽象类中演化而来的,因而除特别规定,接口享有和类同样的“待遇”。比如,源程序中可以定义0~多个类或接口,但最多只能有一个public的类或接口,如果有则源文件必须取和public的类和接口相同的名字。和类的继承格式一样,接口之间也可以继承,子接口可以继承父接口中的常量和抽象方法并添加新的抽象方法等。

但接口有其自身的一些特性:

l         接口中声明的属性默认为,也只能是public static final的,因而在常量声明时可以省略这些修饰符;

l         接口中只能定义抽象方法,这些方法默认为public abstract的、也只能是public abstract的,因而在声明方法时可以省略这些修饰符;

l         和继承抽象父类类似,Java类还可以“实现”接口。

 

Java类在继承父类的同时可以同时实现多个接口,也继承了所有接口中的全部成分,仍然必须重写(实现)全部抽象方法,否则只能声明为抽象类。

类实现多个接口时,您需要做的仅是在关键字“implements”后用逗号分隔接口。总之,接口就是其它类需要实现的行为模板(以方法的形式表现)。

例:接口定义及实现

程序:Person.java

public class Person implements Runner {

    public void start() {

        //弯腰、蹬腿、咬牙、瞪眼、 开跑

    }

       public void run() {

              // 摆动手臂、 维持直线方向

       }

       public void stop() {

              // 减速直至停止、喝水。

       }

}

 

2.为什么使用接口?                                                                    

两个类中的两个类似的功能,调用它们的类动态地决定一种实现,那它们提供一个抽象父类,子类分别实现父类所定义的方法。

问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个父类,解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。

接口是可插入性的保证。

在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何父类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。

我们关心的不是哪一个具体的类,而是这个类是否实现了我们需要的接口。

接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。

 

3.接口的基本作用                                                                              

接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处。

对于下述情况,接口是有用的:

   (1)声明方法,期望一个或更多的类来实现该方法。

   (2)揭示一个对象的编程接口,而不揭示类的实际程序体。(当将类的一个包输送到其它开发程序中时它是非常有用的。)

   (3)捕获无关类之间的相似性,而不强迫类关系。

(4)可以作为参数被传递到在其它对象上调用的方法中

 

4.接口示例                                                                          

4.1 接口示例1:接口定义,接口实现类  

4.2 接口示例2:一个接口可以有多个不同的实现类 

4.3 接口示例3:一个类可以继承,也可以实现

Java私塾跟我学系列——JAVA篇  网址:http://www.javass.cn  电话:010-68434236

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26660100/viewspace-715758/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26660100/viewspace-715758/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值