PHP設計模式(四):繼承

原文地址:PHP設計模式(四):繼承php

Introduction

PHP設計模式(二):抽象類和接口以及PHP設計模式(三):封裝中,咱們已經見過繼承,也就是extends關鍵字。
和C/C++,Java,Python等語言同樣,PHP也支持繼承,並且和其餘語言沒有什麼區別。設計模式

繼承/Inheritance

仍是用動物、鯨魚和鯉魚來舉例:bash

<?php
abstract class Animal {
  protected $name;

  protected function chew($food) {
    echo $this->name . " is chewing " . $food . ".\n";
  }
  protected function digest($food) {
    echo $this->name . " is digesting " . $food . ".\n";
  }
}

class Whale extends Animal {
  public function __construct() {
    $this->name = "Whale";
  }
  public function eat($food) {
    $this->chew($food);
    $this->digest($food);
  }
}

class Carp extends Animal {
  public function __construct() {
    $this->name = "Carp";
  }
  public function eat($food) {
    $this->chew($food);
    $this->digest($food);
  }
}

$whale = new Whale();
$whale->eat("fish");
$carp = new Carp();
$carp->eat("moss");
?>

運行一下:this

$ php Inheritance.php
Whale is chewing fish.
Whale is digesting fish.
Carp is chewing moss.
Carp is digesting moss.

注意$this在Animal類、Whale類、Carp類中的用法。
上面的代碼看似常見,實則暗含玄機。對於一個好的程序設計,須要:設計

  1. 類和類之間應該是低耦合的。code

  2. 繼承一般是繼承自抽象類,而不是具體類。繼承

  3. 一般直接繼承抽象類的具體類只有一層,在抽象類中用protected來限定。接口

Summary

合理的繼承對於好的程序設計一樣是必不可少的,結合abstract和protected,能讓你編寫出結構清晰的代碼。get

相關文章
相關標籤/搜索