Часто бывает нужно использовать классы с аналогичными переменными и функциями в другом существующем классе. На практике было бы удобно определять общий/generic класс, который можно было бы использовать во всех ваших проектах и адаптировать этот класс для нужд каждого конкретного проекта. Для облегчения этого процесса классы могут быть расширениями других классов. Расширяющий класс имеет все переменные и функции базового класса (это называется 'наследование/inheritance', хотя никто не умер...) и то, что вы добавили в расширенном определении. Из наследуемого класса невозможно ничего изъять, то есть разопределить любую существующую функцию или переменную. Расширяющий класс всегда зависит от единственного базового класса, то есть множественное наследование не поддерживается. Классы расширяются при помощи ключевого слова 'extends'.