代码之家  ›  专栏  ›  技术社区  ›  Pim Jager

类可以同时扩展类和实现接口吗

  •  85
  • Pim Jager  · 技术社区  · 17 年前


    基本上我想这样做:

    interface databaseInterface{
     public function query($q);
     public function escape($s);
     //more methods
    }
    
    class database{ //extends both mysqli and implements databaseInterface
     //etc.
    }
    

    一个人如何做到这一点,仅仅是做:

    class database implements databaseInterface extends mysqli{ 
    

    Parse error: syntax error, unexpected T_EXTENDS, expecting '{' in *file* on line *line*
    
    3 回复  |  直到 13 年前
        1
  •  190
  •   Simon Lehmann    17 年前

    换一种方式试试:

    class database extends mysqli implements databaseInterface { ...}
    

    这应该行得通。

        2
  •  25
  •   Michał Niedźwiedzki    17 年前

    是的,它可以。你只需要保持正确的顺序。

    class database extends mysqli implements databaseInterface { ... }
    

    然而,我觉得有必要提醒你 扩展mysqli类是一个非常糟糕的主意 . 继承本身可能是面向对象编程中最被高估和误用的概念。

    相反,我建议用mysqli方式(或PDO方式)来做与db相关的事情。

    另外,这是一件小事,但命名约定确实很重要。你们班 database 看起来更一般 mysqli 因此,它建议后者继承自

        3
  •  10
  •   nullpointer    10 年前

    是的,事实上,如果您想要实现多个接口,您可以这样做:

    public class MyClass extends BaseClass implements myInterface1, myInterface2, myInterface3{ 
    
    }
    
    推荐文章