【问题标题】:Meyer's Implementation inheritance in javaMeyer在java中的实现继承
【发布时间】:2013-11-21 19:00:39
【问题描述】:

有人可以举一个Java中Meyers Implementation inheritance的例子吗,链接中的书是关于埃菲尔的,但我需要一个java例子。

我知道java不支持多重继承,那么如果我实现一个接口并扩展一个类,我们可以称之为实现继承吗?

实现继承的情况也必须有两个父级吗?

【问题讨论】:

    标签: java oop inheritance object-oriented-analysis


    【解决方案1】:

    书中的定义在这里进行了说明:

    定义:实现继承结构继承适用于 B 从 A 获得一组特征(除了常数 属性和曾经的功能)的实施所必需的 与 B 关联的抽象。A 和 B 都必须是 有效。

    A 类和 B 类不得延期。用非抽象类 B 扩展非抽象 Java 类 A 就是这种情况。

    定义:具体化继承具体化继承适用于 A代表一种通用的数据结构,B代表 该数据结构的部分或全部实现选择。 A 被推迟; B可能仍被推迟,为进一步留出空间 通过自己的继承人具体化,或者它可能是有效的。

    类 A 被延迟,所以在实现 Java 接口 A 或扩展 Java 接口 A 时会出现这种情况(新接口将是 B)

    您指定的情况(在 Java 中实现接口和扩展非抽象类)是这两者的组合。文字在这里说得很清楚:

    一种常见的情况是所谓的“便利婚姻”,它基于多重继承,其中一个父级提供规范(具体化继承),另一个提供实现(实现继承)。

    【讨论】:

    • 我认为“A 类和 B 类不能被延迟。扩展 Java 类 A 时就是这种情况。”可能会产生误导。在 Java 中,类 B 可以扩展类 A 而 A 不延迟任何实现:如果类 A 没有声明任何抽象方法并且如果 A 本身没有继承任何它不提供实现的抽象或接口方法,就是这种情况。
    • @Icarus 我在答案中用“非抽象类”替换了“类”。但是我不明白你觉得有什么误导,你描述的不是上面实现继承的基本情况吗?
    • 对于“非抽象类”,我发现它不再不清楚。像以前一样谈论“类”对我来说是一种误导,因为它会包括抽象类。感谢您的改进。
    猜你喜欢
    • 2017-06-15
    • 2016-04-14
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多