java - 跨类层次结构的接口(interface) "Cutting"

标签 java class interface

我正在读一本关于 android 的书,但在一本迷你书中刷了一些 java 的东西。我已经读过一本关于 Java 的书并且了解接口(interface)。书上说

The interface-implementing hierarchy (if you can call it a “hierarchy”) cuts across the class-extension hierarchy. This idea is illustrated in Figure 4-1, where I display class extensions vertically and display interface implementations horizontally. (Android’s KeyboardView class lives in the android.inputmethod service package. Both KeyboardView and the homegrown MyListener class in Listing 4-3 implement Android’s OnClickListener interface.)

Interface Cutting Across Classs Heirarchy

Burd, Barry (2011-11-14). Android Application Development All-in-One For Dummies (p. 197). John Wiley and Sons. Kindle Edition.

“跨越类层次结构的切割”是否仅仅意味着同级类都扩展了接口(interface)...我不明白他们用这个图还指出了什么,并说它水平地跨越了图 4 中的类垂直层次结构-3...请解释是否有比我从中得到的更深的特殊概念...

最佳答案

MyListenerKeyboardView 类都实现了 OnClickListener 接口(interface)。这使得这两个类都成为 OnClickListener

其思想如下:每个类都派生自基类(Object 是可用的最基本的类)。这使得每个类都成为对象。从面向对象编程的角度思考,关于某物你能说的最抽象的事情是,它是一个对象。

回到接口(interface),假设您有两个接口(interface),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

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

  1. 一个对象
  2. 歌手
  3. 一个作家

这种“贯穿类层次结构”的方式是通过实现接口(interface)而不是从更多类派生来提供有关类的更多信息。

关于java - 跨类层次结构的接口(interface) "Cutting",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768861/

相关文章:

Java OOP 公共(public)、私有(private)、 protected

Java 泛型 - 使用 Class<? 类型的变量extends Whatever> (clazz 无法解析为类型)

java - LibGDX Box2DLights 在渲染时抛出错误

java - 比较器 - 未获得所需结果

java - 带有 LIBSVM 的 epsilon-SVR

C++14 operator << 用于流插入和枚举类

php - 如何将多个值传递给类?

java - 如何返回一个泛型类型,同时将另一个泛型类型作为参数,两者都需要实现接口(interface)?

java - 如何在Java中正确实现MVC模式?

c++ - 从 UML 到 C++ "Interface offered by a component"