Я хочу знать, можем ли мы создать абстрактный класс без абстрактного метода в php или нет.
Если да, то как класс может называться «абстрактный класс», поскольку он не содержит никакого абстрактного метода? Кроме того, это стандартная / поддерживающая практика кода?
Если нет, то в чем причина?
Может ли абстрактный класс содержать только абстрактные методы, а не обычные методы?
Примечание: я хочу получить ответ с примером работающего подходящего кода. Ответ должен быть конкретным только для языка PHP.
Абстрактный класс — это класс, который не может быть создан и должен быть расширен дочерними классами. Любые абстрактные методы в абстрактном классе должны быть реализованы расширяющим дочерним классом (или он также должен быть абстрактным). Это возможный иметь абстрактный класс без абстрактных методов для реализации; но это не особенно полезно.
Суть абстрактного класса в том, что вы можете заранее определить интерфейс, но оставить реализацию на усмотрение других. Затем вы можете работать с этим абстрактным интерфейсом и быть уверенным, что он будет работать как задумано, не зная заранее, какой будет конкретная реализация:
abstract class Foo {
abstract public function bar();
}
function baz(Foo $foo) {
echo $foo->bar();
}
baz
может зависеть от того, что $foo
будет выглядеть точно, не имея ни малейшего представления, как именно это реализовано.
Наличие абстрактного класса без каких-либо абстрактных методов позволяет вам напечатать подсказку Foo
, но тогда вы еще ничего не знаете о том, что $foo
будет иметь с точки зрения методов или свойств, так что это довольно бессмысленно.
Других решений пока нет …