В чем разница между публичным абстрактным классом с публичным конструктором и открытым классом с защищенным конструктором. У нас нет каких-либо абстрактных функций в нашем абстрактном классе, но мы хотим, чтобы программисты могли создавать объекты, расширяющие этот класс.
Оба сценария компилируются и работают, однако я не понимаю, что лучше использовать в каком сценарии. Я был воспитан, чтобы понять, что, хотя вы не можете создавать абстрактный класс напрямую (только через не абстрактный абстрактный класс), абстрактный класс должен обычно содержать абстрактные функции, которые должны выполняться дочерними элементами этого класса.
Не иметь защищенного конструктора в открытом классе означает, что создание этого класса невозможно (это единственный конструктор, который у нас есть).