Является ли изменение имени унаследованной переменной все еще рассматривается как переопределение?

Как указано выше, у меня есть функция с одним входным параметром в базовом классе.

  1. Переопределяет ли это в производном классе, но с изменением имени переменной, все еще рассматриваемой как переопределение а не как перегрузка?
    Я знаю, что это относится к таким языкам, как Java, но как насчет php?

    abstract public foo($a); -> класс А1
    public foo($b){} -> класс B1 (B1 расширяет A1)

  2. Те же вопросы, но с немного другим случаем:
    abstract public foo (Vehicle $car) -> класс А2
    public foo (Mercedes $myCar) -> класс B2 (B2 расширяет класс A2) И (класс Mercedes расширяет класс автомобиля)

2

Решение

  1. Не будет выдавать никаких ошибок, все работает просто отлично. Но не будет двух разных методов foo, только один

    абстрактный класс А {
    абстрактная публичная функция foo ($ a);
    }

    класс B расширяет A {
    public function foo ($ b) {}
    }

  2. Будет производить это:

Неустранимая ошибка PHP: объявление B :: foo () должно быть совместимо с
A :: foo (Автомобиль $ a) в /home/test.php в строке 11

class Vehicle {}
class Car extends Vehicle {}

abstract class A {
abstract public function foo(Vehicle $a);
}

class B extends A {
public function foo(Car $b) {}
}

В PHP нет перегрузки, просто переопределение

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]