Есть такой код:
<?php
class User {
public $userName;
private $userPassword;
function __construct($userName, $userPassword) {
$this->userName = $userName;
$this->userPassword = $userPassword;
}
function reg() {
echo "<br> User with name $this->userName registrated";
}
}
class Car extends User {
protected $userCar;
function __construct($userCar) {
$this->userCar = $userCar;
}
function regCar() {
echo "<br> Car $this->userCar registrated for user $this->userName";
}
}
$userName = 'The Tux';
$userPassword = '123';
$userCar = 'Subaru';
$user = new User($userName, $userPassword);
$car = new Car($userCar);
$user->reg();
$car->regCar();
$car->reg();
Как в классе Car получить значение userName? Не совсем понял смысл наследования? Присваивать значение объекту: $car->userName = $user->userName? Или через конструктор класса Car?
Вы не верно понимаете наследование. И ваш пример действительно бессмысленный, при помощи него нельзя ничего изучить и понять зачем наследование нужно.
Приведу более понятный пример:
<?php
interface Info
{
public function info();
}
abstract class Named
{
protected $name;
public function __construct($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
}
class User extends Named
{
private $password;
public function __construct($name, $password) {
parent::__construct($name);
$this->password = $password;
}
}
class Car extends Named implements Info
{
protected $owner;
public function __construct($name, User $owner) {
parent::__construct($name);
$this->owner = $owner;
}
public function info() {
return "This is car " . $this->getName() . ". Owner is user " . $this->owner->getName() . ".";
}
}
Здесь класс Пользователь
расширяет класс Именуемый
и дополняет его дополнительным приватным свойством Пароль
. Класс Машина
расширяет класс Именуемый
, дополняет его защищённым свойством Владелец
и также может возвращать информацию о себе.
$user1 = new User("Ivan", "Qwe");
$car = new Car("Subaru", $user1);
$user2 = new User("Petr", "Asdf");
print_r([
$user1->getName(),
$car->getName(),
$car->info(),
$user2->getName(),
]);
Здесь print_r
выведет следующее:
Array
(
[0] => Ivan
[1] => Subaru
[2] => This is car Subaru. Owner is user Ivan.
[3] => Petr
)
Если вы поймёте как оно работает, то первый, третий и четвёртый вопросы отпадут сами по себе
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Есть форма (текстовое поле textarea)В моей форме допустим Вы написали: