跨类层次的“切割”界面

时间:2012-08-01 23:08:32

标签: java class interface

我正在阅读一本关于android的书,但刷过一些迷你书中的java东西。我已经读过一本关于Java的书,并且知道接口。书上写着

  

接口实现层次结构(如果你可以称之为   “层次结构”)跨越类扩展层次结构。这个想法是   如图4-1所示,我在其中垂直显示类扩展   并水平显示界面实现。 (Android的   KeyboardView类存在于android.inputmethod服务包中。   KeyboardView和清单4-3中的自行开发的MyListener类   实现Android的OnClickListener接口。)

     

Interface Cutting Across Classs Heirarchy

     

Burd,Barry(2011-11-14)。 Android应用程序开发All-in-One   对于傻瓜(第197页)。约翰威利和儿子。 Kindle版。

“整个班级的切割”是否仅仅意味着兄弟类扩展了界面......我不知道他们用这个图表指出了什么,并且说它在图4中横向切割了类垂直的heirchy -3 ...请解释是否有比我得到的更深刻的特殊概念......

1 个答案:

答案 0 :(得分:2)

MyListenerKeyboardView - 类都实现了OnClickListener - 接口。这使得这两个类OnClickListener s。

这个想法如下:每个类派生自一个基类(Object是最基本的类)。这使得每个班级都为Object。根据OOP思考,你可以说关于某事的最抽象的事情是,它是一个对象。

回到界面,我们假设您有两个界面SingerWriter。一个人可以是一个歌手,一个人可以是一个作家。但他/她也可以兼得。

实施Singer和/或Writer会告诉您有关对象的更多信息。一些代码:

class Guy implements Singer, Writer{
  // Empty
}
Guy chris = new Guy();

hireWriter(chris); // Accepts "Writer" as it's parameter
hireSinger(chris); // Accepts "Singer" as it's parameter

通过实现接口,您可以告诉您的代码该对象是:

  1. Object
  2. A Singer
  3. A Writer
  4. 通过班级层次结构"切断"通过不从更多类派生,而是通过实现接口来提供有关类的更多信息。