Polimorfismo consiste em um classe Filha sobrescrever a implementação de um método 
                herdado da classe Pai. Dessa forma, uma classe Filha pode utilizar um ou mais 
                métodos com a mesma assinatura, porém com comportamentos diferentes.
            
            
                O que foi discutido acima é colocado em prática com a sobrescrita de métodos 
                nos exemplos 8 e 9 mostrados abaixo:
            
            Exemplo 8: Sem polimorfismo 
            
<?php
    //main.php
    class Pai
    {
        public $atributo = 100;
        //construtor omitido
        public function metodo(){
          echo "Pai: metodo()","\n";
          echo $this->atributo,"\n";
        }
    }
    class Filha extends Pai{
    //construtor omitido
    }
    //chamada ao método da classe Pai por Filha
    $f = new Filha();
    $f->metodo();
?>
            Saída
            
Pai: metodo()
100
            Exemplo 9: Com polimorfismo 
            
<?php
    //main.php
    class Pai
    {
        public $atributo = 100;
        //método que será sobrescrito
        public function metodo(){
          echo "Pai: metodo()","\n";
          echo $this->atributo,"\n";
        }
    }
    class Filha extends Pai{
        //método sobrescrito
        public function metodo(){
          echo "Filha: metodo()","\n";
          echo $this->atributo*2,"\n";
        }
    }
    $p = new Pai();
    $p->metodo();
    $f = new Filha();
    $f->metodo();
?>
            Saída
            
Pai: metodo()
100
Filha: metodo()
200
            
                Por padrão, qualquer método que utiliza os modificadores de acesso public e 
                protected pode sofrer polimorfismo quando sua classe for herdada. 
            
            
                Para evitar que um método não seja sobrescrito, a linguagem PHP possui é o modificador 
                de restrição final que deve ser utilizado na declaração de um método.
            
            Sintaxe
            
modificador_acesso final nome_metodo(<lista_parametros>)
{
   //omitido
}
            Exemplo 10
            
<?php
//main.php
    class Pai
    {
        public $atributo = 100;
        //método que será sobrescrito
        public final function metodo(){
          echo "Pai: metodo()","\n";
          echo $this->atributo,"\n";
        }
    }
    class Filha extends Pai{
        //método sobrescrito
        public function metodo(){
          echo "Filha: metodo()","\n";
          echo $this->atributo*(0.10),"\n";
        }
    }
    $f = new Filha();
     //chamada ao método sobrescrito
    $f->metodo();
?>
            Saída
            
PHP Fatal error:  Cannot override final method Pai::metodo() in main.php on line 17