Java编程思想之9接口

来源:互联网 发布:兔狗家装网怎么样知乎 编辑:程序博客网 时间:2024/05/17 18:02

这一章比较简单了,跟前面的封装继承多态比起来,比较简单了。

我开始学java的时候,一直弄不懂接口到底什么???怎么说它就帮助Java首先多重继承了。

接口是什么??

interface是一个极度抽象的类,它允许人们通过创建一个能够被向上转型为多种基类的类型,来实现某种类似多重继承变种的特性。

这是《java编程思想4》第172页的一段话。 首先要明确一点,接口是一个类。跟抽象类类似,比抽象类更抽象。 以后见到接口,就可以当作,它是一种特殊的类。

它的特殊,主要特殊在一些规定上。普通类有普通类的规定,抽象类有抽象类的规定,极度抽象类(接口)有极度抽象类的规定。

它定义的所有方法仅仅有方法名,参数列表和返回类型。没有任何方法体。谁 implements这个接口,就要求谁实现这些方法。跟上一章多态类似,我完全可以声明一个接口变量,调用接口里面的方法,当这个方法真正运行时,根据这个接口变量的实际类型来调用相应的方法。这个实际类型里面一定有这个方法。因为它implements了这个接口,在语法上就必须实现这个接口的所有方法。这样做,当然就不会出任何问题。  所以,这样看起来,一个接口真的跟一个抽象类很像。

我们创建一个变量,都是让它来干某件事儿,即使是用它来保存信息,我们也可以用setXX()来实现。这样一来,我们用的所有变量,都是用它的某个功能,某个方法。这个正好恰恰是接口能干的。所以,完全可以是多重继承了,一个类实现了几个接口后。每个接口都可以这样的调用这个类的方法。这样,就跟多重继承很像很像了。

总之,interface就是一个极度抽象的类,具体类可以implements好几个interface,就可以表现出多个interface的功能方法,就实现了多重继承了。

既然我们可以在类上做一些规定,然后有了abstract class 。 就可以再加一些规定,变成 interface class。 这个比较有点长,就直接用interface了。

接口的一些小知识

  1. 接口作为一种特殊的类,有它自己的特性。
  2. 它所有的方法都没有方法体。没有实现的。
  3. 它的域隐式的是:static  final 的。
  4. 它的方法是public 的。 所以实现这个接口的类的对应的方法,也应该是public。否这就会报错。 这个好理解,因为interface的变量必须能调用所有方法,你的权限变小了,有可能就不能调用了。这肯定不行的。
  5. 它比普通的基类,更容易解偶。如果一个方法操作的是类,那么就只能使用这个类或者其子类了。但是接口,就可以很大程度的消除这个限制。
  6. 一个类,它的父类实现了某个方法。那也行。子类implements某接口后,就不用再重新实现了。

使用接口的原因

核心原因:为了能够向上转型成多个基类型(以及由此带来的灵活性,带来的耦合度的降低)

第二原因:防止客户端程序员创建该类的对象,并确保这仅仅是建立一个接口。(跟抽象类类似)


0 0
原创粉丝点击