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