Наследование
В Vala класс может наследовать от одного класса или вовсе не наследовать. На самом деле это обычно один класс, т.к. здесь нет неявного наследования как это в Java.
При наследовании вы создаете класс, объекты этого подкласса являются объектами и базового класса. Это значит что на них можно проводить те же действия, что и с объектами базового класса, поэтому если потребуется экземпляр базового класса, то экземпляр потомка можно к этому типу привести.
При создании класса у вас есть полный контроль над установкой доступа к методам и полям объекта. Следующий пример демонстрирует ряд таких возможностей:
data
является полем для хранения данных в объектах класса SuperClass
. В каждом экземпляре SuperClass
будет такое поле, и он объявлен как private, поэтому он доступен внутри класса SuperClass
.
protected_method
является методом уровня объекта типа SuperClass
. Вы можете его вызвать, только если создадите экземпляр класса SuperClass
или его потомков, и только из кода внутри SuperClass
или его потомков - последнее условие является результатом применения модификатора protected
.
public_static_method
имеет два модификатора. static
значит, что данный метод можно вызвать и без наличия экземпляра класса SuperClass
или наследующих от него. Следовательно, метод не будет иметь доступа к ссылке во время выполнения. public
значит, что метод можно вызывать из любого места, независимо как он относится к SuperClass
или к наследующим от него.
С учетом этих определений, экземпляр подкласса (SubClass
) будет содержать все три члена супер-класса (SuperClass
), но не будет иметь доступа к открытым членам. Внешний код имеет доступ только к открытым методам.
С помощью base
конструктор класса-наследника может по цепочке вызывать конструктор базового класса.
Last updated