⊗ppOpFnCl 63 of 107 menu

Abstract Classes in OOP in PHP

Suppose you have a class User, and classes Employee and Student inherit from it.

It is assumed that you will create objects of the classes Employee and Student, but you will not create objects of the class User, as this class is used only for grouping common properties and methods of its descendants.

In this case, you can forcibly prohibit creating objects of the class User, so that you or another programmer do not accidentally create them somewhere.

For this, there are so-called abstract classes. Abstract classes are classes intended for inheritance from them. At the same time, objects of such classes cannot be created.

To declare a class abstract, you need to write the keyword abstract during its declaration:

<?php abstract class User { } ?>

So, let's write the implementation of the abstract class User. Let it have a private property name, as well as getters and setters for it:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } } ?>

An attempt to create an object of the class User will cause an error:

<?php $user = new User; // will throw an error ?>

But it will be possible to inherit from our class. Let's create a class Employee, which will inherit from our abstract class User:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } } ?>

Let's create an object of the class Employee - everything will work:

<?php $employee = new Employee; $employee->setName('john'); // parent's method, i.e. from the User class $employee->setSalary(1000); // its own method, i.e. from the Employee class echo $employee->getName(); // will output 'john' echo $employee->getSalary(); // will output 1000 ?>

Make an abstract class Figure, representing a geometric figure. Let classes for a circle, rectangle, and square inherit from it.

byenru