是否可以禁止直接实现接口

时间:2014-12-25 13:51:58

标签: php interface

是否可以禁止直接实现界面?而不是这个类必须实现此接口的后代(如Traversable)。

2 个答案:

答案 0 :(得分:0)

可以使用protected关键字定义您的接口,因此只有同一个包中的类才能实现该接口。

答案 1 :(得分:0)

Traversable 是一个内部接口。它没有后代。只是当你在PHP用户区(他编写PHP代码的地方)时,你不能直接实现 Traversable ,而只能实现其中一个两个也是 Traversable

  1. Iterator
  2. IteratorAggregate
  3. 但原因并不是你可以在PHP用户空间中控制一些后代关系,而只有 Traversal 是用户空间不可用的内部接口

    除了接口之外,您可以做的是创建一个无法实例化的抽象类。您稍后会要求提供这种抽象类型:

    abstract class Mineable 
    {
       // ...
    }
    
    class MineAggregate extends Mineable 
    {
       // ...
    }
    
    class Mine extends Mineable
    {
       // ...
    }
    

    那些没有接口,这是有充分理由的。 Traversable 示例可能误导了您,通常不应该在那里做过什么。另见:

    很自然地,您也可以使用接口构建它,但任何接口都可以实现:

    interface Mineable {} // this interface is empty just for the taste of it
    
    interface MineAggregate extends Mineable 
    {
       // ...
    }
    
    interface Mine extends Mineable
    {
       // ...
    }
    

    我不知道这是否是您正在寻找的,我必须承认,您的问题对我来说并不是很清楚。