Очень, очень неполный обзор:
Класс - это структура (вы знаете C / C ++, не так ли?)
Методы в остальном обычные функции, за исключением того, что они получают дополнительный неявный аргумент: сам объект.Этот аргумент обычно называется «this» или «self» внутри функции.Символы области видимости могут (C ++, JavaScript) или не могут (PHP, Python) быть доступны по умолчанию в методах.
Наследование по сути склеивает структуры и, возможно, также объединяет таблицы символовтакже, как обычно, символы базового класса доступны по умолчанию из методов класса, который вы сейчас анализируете.Когда вы встречаете символ (поле или метод) внутри метода, вам нужно выполнить поиск по возрастанию, начиная с текущего класса, поднимаясь по иерархии.Или вы можете реализовать его так, чтобы вы искали его только в одной таблице символов, которая является результатом слияния.
Виртуальные методы вызываются косвенно.В некоторых языках все методы являются виртуальными по умолчанию.Реализация будет зависеть от того, является ли это полностью динамическим языком, и в этом случае вы всегда ищете имя функции в классе во время выполнения , и, таким образом, все ваши методы становятся виртуальными автоматически;или в случае статических языков компиляторы обычно строят так называемые таблицы виртуальных методов.Я не уверен, что вам это вообще нужно, поэтому я не буду вдаваться в подробности.
Конструкторы - это специальные методы, которые вызываются либо при создании нового объекта (обычно с'new') или иначе вызываются как часть цепочки вызовов конструктора из конструкторов-потомков.Здесь возможно множество различных реализаций, одна из которых заключается в том, что конструктор принимает неявный аргумент «this», который может иметь значение NULL, если объект еще не создан, и также возвращает его.
Destructiors - это обычные методы, которые обычно вызываются неявно, когда объект выходит из области видимости.Опять же, вам нужно учитывать возможность восходящей цепочки вызовов для деструкторов.
Интерфейсы сложны, если, опять же, ваш язык не является полностью динамичным.