⊗ppOpIfII 74 of 107 menu

Herança de classe e implementação de interface em OOP em PHP

Uma classe pode herdar de outra classe e ao mesmo tempo implementar alguma interface. Vamos considerar um exemplo prático.

Suponha que queremos criar uma classe Programmer, que terá um nome, um salário e uma lista de linguagens que o programador conhece. No momento, nossa descrição da classe é bastante vaga: sim, a classe terá nome, salário, linguagens - mas quais métodos estarão em nossa classe?

Vamos descrever nossa classe com mais precisão usando a interface iProgrammer:

<?php interface iProgrammer { public function __construct($name, $salary); public function getName(); public function getSalary(); public function getLangs(); public function addLang($lang); } ?>

Suponha que vasculhamos nossas classes já implementadas e, acontece que já temos uma classe semelhante Employee. Ela não implementa todos os métodos da classe Programmer, mas uma parte. Aqui está o código da nossa classe já existente:

<?php class Employee { private $name; private $salary; public function __construct($name, $salary) { $this->name = $name; $this->salary = $salary; } public function getName() { return $this->name; } public function getSalary() { return $this->salary; } } ?>

É lógico, no nosso caso, fazer com que nossa nova classe Programmer herde parte dos métodos necessários da classe Employee (e uma parte implementaremos depois na própria nova classe):

<?php class Programmer extends Employee { } ?>

Além disso, sabemos que a classe Pogrammer deve implementar a interface iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Vamos combinar a herança da classe Employee e a implementação da interface iProgrammer:

<?php class Programmer extends Employee implements iProgrammer { } ?>

O resultado é que nossa classe Pogrammer herdará da classe Employee os métodos __construct, getName e getSalary, e os métodos addLang e getLangs teremos que implementar:

<?php class Programmer extends Employee implements iProgrammer { public function addLang($lang) { // implementação } public function getLangs() { // implementação } } ?>

Para a interface iProgrammer, não importa se os métodos são nativos da classe ou herdados - o principal é que todos os métodos descritos estejam implementados.

Copie o código da minha classe Employee e o código da interface iProgrammer. Não copie meu esboço da classe Programmer - sem espiar o meu código, implemente esta classe você mesmo.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar