Можем ли мы создать абстрактный класс без абстрактного метода в php?

Я хочу знать, можем ли мы создать абстрактный класс без абстрактного метода в php или нет.

Если да, то как класс может называться «абстрактный класс», поскольку он не содержит никакого абстрактного метода? Кроме того, это стандартная / поддерживающая практика кода?

Если нет, то в чем причина?

Может ли абстрактный класс содержать только абстрактные методы, а не обычные методы?

Примечание: я хочу получить ответ с примером работающего подходящего кода. Ответ должен быть конкретным только для языка PHP.

-10

Решение

Абстрактный класс — это класс, который не может быть создан и должен быть расширен дочерними классами. Любые абстрактные методы в абстрактном классе должны быть реализованы расширяющим дочерним классом (или он также должен быть абстрактным). Это возможный иметь абстрактный класс без абстрактных методов для реализации; но это не особенно полезно.

Суть абстрактного класса в том, что вы можете заранее определить интерфейс, но оставить реализацию на усмотрение других. Затем вы можете работать с этим абстрактным интерфейсом и быть уверенным, что он будет работать как задумано, не зная заранее, какой будет конкретная реализация:

abstract class Foo {
abstract public function bar();
}

function baz(Foo $foo) {
echo $foo->bar();
}

baz может зависеть от того, что $foo будет выглядеть точно, не имея ни малейшего представления, как именно это реализовано.

Наличие абстрактного класса без каких-либо абстрактных методов позволяет вам напечатать подсказку Foo, но тогда вы еще ничего не знаете о том, что $foo будет иметь с точки зрения методов или свойств, так что это довольно бессмысленно.

1

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

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