【问题标题】:Block an interface to be extended [duplicate]阻止要扩展的接口[重复]
【发布时间】:2016-08-25 09:26:55
【问题描述】:

因为在课堂上我可以做到:

public final class Foo{}

这意味着没有更多的类可以扩展 Foo 类...例如String 类是最终类,因此没有自定义类可以扩展类String

如何防止对接口做同样的事情?

如果我这样做

public interface ISome{
    void fly();
}

我愿意这样做

class A implements ISome {}

但要阻止

public interface IHouse extends ISome{
    void fly();
}

这样做

public final interface ISome{}

没有意义...并且会带来如下编译错误:

Illegal modifier for the interface

【问题讨论】:

    标签: java inheritance interface


    【解决方案1】:

    你不能。

    假设 Java 设计者认为没有合适的用例:如果您不希望扩展 interface,那么实际上您应该直接在具体的 class 中声明这些函数.

    也就是说,您可以在 C++ 中实现这一点,因为在这种语言中,接口更像是一种约定 - 仅包含纯虚函数,并且您可以强制执行非- 使用friendship 等技术进行扩展。

    【讨论】:

      猜你喜欢
      • 2014-12-29
      • 2015-10-16
      • 2013-10-12
      • 1970-01-01
      • 2017-02-28
      • 2016-07-20
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      相关资源
      最近更新 更多