Разница между открытым и закрытым наследованием в ООП заключается в уровне доступа к членам наследуемого класса. 3
Открытое наследование (если задан модификатор public) означает, что protected и public элементы базового класса остаются соответственно protected и public в классе-наследнике. 4 Любой объект типа B также является объектом (разновидностью) типа A (но не наоборот!). 4
Закрытое наследование (если задан модификатор private) нужно для ограничения доступа к членам наследуемого класса, например, чтобы разрешить доступ лишь к части публичных методов базового класса через экземпляр наследника. 3
Также защищённое наследование (использование модификатора protected) применяется редко и означает, что все public элементы базового класса становятся protected элементами дочернего класса. 4