插件窝 干货文章 php中继承父类的有哪些

php中继承父类的有哪些

method public 子类 child 815    来源:    2025-03-16

在PHP中,继承是面向对象编程(OOP)的一个重要特性,允许一个类(子类)继承另一个类(父类)的属性和方法。以下是PHP中继承父类的一些关键点:

  1. 基本继承

    • 使用 extends 关键字来实现继承。
    • 子类可以继承父类的所有非私有(publicprotected)属性和方法。
    class ParentClass {
       public $property = 'Parent Property';
    
       public function method() {
           echo 'Parent Method';
       }
    }
    
    class ChildClass extends ParentClass {
       // 子类继承了父类的属性和方法
    }
    
    $child = new ChildClass();
    echo $child->property; // 输出: Parent Property
    $child->method();      // 输出: Parent Method
    
  2. 方法重写

    • 子类可以重写(覆盖)父类的方法。
    • 重写的方法可以有不同的实现。
    class ParentClass {
       public function method() {
           echo 'Parent Method';
       }
    }
    
    class ChildClass extends ParentClass {
       public function method() {
           echo 'Child Method';
       }
    }
    
    $child = new ChildClass();
    $child->method(); // 输出: Child Method
    
  3. 访问父类的方法

    • 在子类中,可以使用 parent:: 来调用父类的方法。
    class ParentClass {
       public function method() {
           echo 'Parent Method';
       }
    }
    
    class ChildClass extends ParentClass {
       public function method() {
           parent::method(); // 调用父类的方法
           echo 'Child Method';
       }
    }
    
    $child = new ChildClass();
    $child->method(); // 输出: Parent Method Child Method
    
  4. 构造函数继承

    • 子类可以继承父类的构造函数。
    • 如果子类没有定义构造函数,则会自动调用父类的构造函数。
    • 如果子类定义了构造函数,并且需要调用父类的构造函数,必须显式调用 parent::__construct()
    class ParentClass {
       public function __construct() {
           echo 'Parent Constructor';
       }
    }
    
    class ChildClass extends ParentClass {
       public function __construct() {
           parent::__construct(); // 调用父类的构造函数
           echo 'Child Constructor';
       }
    }
    
    $child = new ChildClass(); // 输出: Parent Constructor Child Constructor
    
  5. 访问控制

    • public:属性和方法可以在任何地方访问。
    • protected:属性和方法只能在类内部和子类中访问。
    • private:属性和方法只能在类内部访问,子类无法继承。
    class ParentClass {
       public $publicProperty = 'Public';
       protected $protectedProperty = 'Protected';
       private $privateProperty = 'Private';
    
       public function method() {
           echo $this->publicProperty;
           echo $this->protectedProperty;
           echo $this->privateProperty;
       }
    }
    
    class ChildClass extends ParentClass {
       public function method() {
           echo $this->publicProperty;    // 可以访问
           echo $this->protectedProperty; // 可以访问
           // echo $this->privateProperty; // 无法访问
       }
    }
    
    $child = new ChildClass();
    $child->method();
    
  6. 抽象类和接口

    • 抽象类:可以包含抽象方法(没有实现的方法),子类必须实现这些抽象方法。
    • 接口:定义了一组方法的签名,实现接口的类必须实现这些方法。
    abstract class ParentClass {
       abstract public function method();
    }
    
    class ChildClass extends ParentClass {
       public function method() {
           echo 'Implemented Method';
       }
    }
    
    $child = new ChildClass();
    $child->method(); // 输出: Implemented Method
    
    interface MyInterface {
       public function method();
    }
    
    class ChildClass implements MyInterface {
       public function method() {
           echo 'Implemented Method';
       }
    }
    
    $child = new ChildClass();
    $child->method(); // 输出: Implemented Method
    
  7. 多重继承

    • PHP不支持多重继承(即一个类不能直接继承多个类)。
    • 但可以通过使用接口来实现类似多重继承的效果。
    interface InterfaceA {
       public function methodA();
    }
    
    interface InterfaceB {
       public function methodB();
    }
    
    class ChildClass implements InterfaceA, InterfaceB {
       public function methodA() {
           echo 'Method A';
       }
    
       public function methodB() {
           echo 'Method B';
       }
    }
    
    $child = new ChildClass();
    $child->methodA(); // 输出: Method A
    $child->methodB(); // 输出: Method B
    

这些是PHP中继承父类的一些主要概念和用法。通过继承,可以实现代码的重用和扩展,提高代码的可维护性和可读性。