Herencia

Un concepto importante de OOP es la herencia. Una clase puede ser una subclase de una clase principal. La subclase hereda las características de la clase padre, extendiendo o anulando su comportamiento.

La biblioteca GObject proporciona la clase base GObject. Cada clase en GIO y GTK hereda, directa o indirectamente, de la clase base GObject. Al mirar una clase basada en GObject, la documentación (si está escrita con GTK-Doc) siempre contiene una Jerarquía de objetos. Por ejemplo, GtkApplication tiene la siguiente jerarquía de objetos:

GObject
└── GApplication
    └── GtkApplication

Significa que cuando crea un objeto GtkApplication, también tiene acceso a las funciones, señales y propiedades de GApplication (implementado en GIO) y GObject. Por supuesto, las funciones g_application_* toman como primer argumento una variable de tipo "GApplication *", no "GtkApplication *". Para convertir la variable en el tipo correcto, la forma recomendada es usar la macro G_APPLICATION(). Por ejemplo:

GtkApplication *app;

g_application_mark_busy (G_APPLICATION (app));