⊗ppOpFnMt 64 of 107 menu

Métodos Abstratos em POO em PHP

Classes abstratas também podem conter métodos abstratos. Tais métodos não devem ter implementação, mas são necessários para indicar que tais métodos devem estar presentes nas classes filhas. E a implementação desses métodos já é uma tarefa para as classes filhas.

Para declarar um método como abstrato, ao declará-lo, deve-se escrever a palavra-chave abstract.

Vamos experimentar na prática. Suponha que se espere que todas as classes filhas da classe User tenham o método increaseRevenue.

Este método deve pegar a receita atual do usuário e aumentá-la em um determinado valor, passado como parâmetro.

A própria classe User não sabe qual receita exatamente a classe filha receberá - pois para um funcionário é um salário, enquanto para um estudante é uma bolsa. Portanto, cada classe filha implementará este método à sua própria maneira.

A essência aqui é que o método abstrato da classe User força o programador a implementar este método nas classes filhas, caso contrário o PHP retornará um erro. Dessa forma, você, ou outro programador, trabalhando com seu código, não conseguirá de forma alguma esquecer de implementar o método necessário na classe filha.

Então, vamos experimentar na prática. Vamos adicionar um método abstrato increaseRevenue à classe User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Método abstrato sem corpo: abstract public function increaseRevenue($value); } ?>

Suponha que nossa classe Employee permaneça sem alterações por enquanto. Neste caso, mesmo sem criar um objeto da classe Employee, mas simplesmente executar o código onde nossas classes são definidas - o PHP retornará um erro.

Agora vamos escrever a implementação do método increaseRevenue na classe Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Vamos escrever a implementação do método: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Vamos verificar o funcionamento da nossa classe:

<?php $employee = new Employee; $employee->setName('john'); $employee->setSalary(1000); $employee->increaseRevenue(100); echo $employee->getSalary(); ?>

Vamos implementar o método increaseRevenue também na classe Student. Só que agora o nosso método aumentará a bolsa:

<?php class Student extends User { private $scholarship; // bolsa public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // O método aumenta a bolsa: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Adicione à sua classe User o mesmo método abstrato increaseRevenue. Escreva a implementação deste método nas classes Employee e Student.

Na classe Figure, torne abstratos os métodos para obter a área e o perímetro da figura.

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