Автоматное программирование
- 1 year ago
- 0
- 0
В программировании суперклассом или родительским классом называют класс , на основе которого создаются другие классы. Классы, полученные на основе суперкласса, называются дочерними классами , производными классами или подклассами .
Суперкласс позволяет создавать обобщенный интерфейс, заключающий в себе настраиваемую функциональность за счет использования виртуальных функций .
Механизм суперклассов широко используется в объектно-ориентированном программировании благодаря возможности повторного использования , что достигается благодаря общим возможностям, инкапсулированным в модульные объекты.
Языки программирования могут поддерживать абстрактные и конкретные суперклассы.
Базовый класс — это класс, не имеющий суперкласса, и поэтому находится в основании дерева подклассов. Большинство объектно-ориентированных систем программирования обеспечивает библиотеку классов, на основании которых разработчик создает свои собственные. Эти библиотеки зачастую предлагают один или довольно ограниченный набор базовых классов, которые составляют основу библиотеки.
В случае, когда язык или библиотека имеют лишь один базовый класс, то он именуется высшим типом .
В языке UML класс может иметь собственный набор корневых (root) свойств для обозначения, что это именно базовый класс.
В C++-стиле (который используется в C# и других языках) термин «базовый класс» используется вместо термина «суперкласс».
В языке программирования
Java
для определения суперкласса какого-либо класса вызывается метод
getSuperclass
. Этот метод возвращает объект Class, отражающий суперкласс данного класса, или возвращает null, если класс не имеет суперклассов. Для определения всех родителей класса метод
getSuperclass
вызывается повторно, пока не возвратит null.
В нижеследующем примере происходит поиск имён родительских классов для класса Button при помощи метода
getSuperclass
:
import java.lang.reflect.*;
import java.awt.*;
class SampleSuper {
public static void main(String[] args) {
Button b = new Button();
printSuperclasses(b);
}
static void printSuperclasses(Object o) {
Class subclass = o.getClass();
Class superclass = subclass.getSuperclass();
while (superclass != null) {
String className = superclass.getName();
System.out.println(className);
subclass = superclass;
superclass = subclass.getSuperclass();
}
}
}
Программа возвращает:
java.awt.Component java.lang.Object