vala
1.0.0
1.0.0
  • Учебник Vala
  • Основы
    • Элементы языка
      • Типы данных
      • Управляющие конструкции
      • Методы
      • Делегаты
      • Лямбды / Замыкания
      • Пространства имён
      • Структуры
      • Классы
    • ООП
      • Основы
      • Конструктор
      • Деструктор
      • Сигналы
      • Свойства(Properties)
      • Наследование
      • Абстрактные классы
      • Интерфейсы / Миксины
      • Полиморфизм
      • Сокрытие методов
      • Информация о типах времени выполнения(Run-Time Type Information)
      • Динамическое приведение типов(Dynamic Type Casting)
      • Универсальные шаблоны(Generics)
      • Создание объектов в стиле GObject
      • Интеграция с D-Bus
      • Профили(Другие бэкенды помимо GLib)
  • Продвинутые возможности
    • Ассерты и контрактное программирование
    • Обработка ошибок
    • Управление параметрами
    • Методы с поддержкой синтаксиса
    • Многопоточность
    • Главный цикл(The Main Loop)
    • Асинхронные методы
    • Слабые ссылки(Weak References)
    • Список аргументов переменной длины
    • Указатели
    • Классы не наследующие Object
    • Коллекции
      • Введение
      • HashSet<G>
      • ArrayList<G>
      • HashMap<K,V>
      • Lock-free структуры
  • Экспериментальные фичи
    • Введение
    • Строгий не null режим(Rust mode)
    • Литералы регулярных выражений(regexp)
    • Цепочки связанных выражений
  • Использование и создание библиотек
    • Введение
    • Инструменты
    • Генерирование VAPI файла из предыдущего с помощью vapigen.
    • Использование библиотек
    • Создание библиотеки
    • Vala and C
    • Meson
      • Config file
      • Static Library
      • Shared Library
      • Target GLib Version
  • Технические приёмы
    • Unit тестирование
    • Отладка
    • Использование GLib
  • Продвинуты гайд(WIP)
  • Habr
  • Примеры кода
  • Functional Programming
    • Gpseq
    • Compose
  • Examples
    • Basic
    • GTK
      • Базовые GTK программы
      • Flappy Bird(WIP)
      • DnD
    • Websocket
  • Apps
    • Games
  • Meson-Book
    • MesonBook
    • Wrap
    • Crosscompile
    • Object files
    • Library
    • Executable
    • Code Generation
    • Installing
    • Unit Tests
    • Meson 0.54
    • Meson 0.53
  • golang-book
    • Ваша первая программа
    • Типы
    • UPDATE.MD
Powered by GitBook
On this page
  • Классы
  • Интерфейсы
  • Атрибуты
  • Примечание

Was this helpful?

  1. Основы
  2. Элементы языка

Классы

Классы

 className класса : SuperClassName , InterfaceName {
}

Определяет класс (ссылочный тип). В отличии от структур, экземпляры классов выделяются в куче. Более полно классы обсуждаются в секции "Объектно-ориентированное программирование".

Интерфейсы

interface  InterfaceName : SuperInterfaceName {
}

Определяет интерфейс - неинстанциируемый тип. Чтобы создать экземпляр интерфейса, необходимо сначала реализовать его абстрактные методы в неабстрактном классе. Интерфейсы в Vala имеют больше возможностей, чем интерфейсы в Java или C#. Фактически они могут быть использованы как примеси. Детали будут описаны в секции "Объектно-ориентированное программирование".

------------

wiki: Преимуществом примесей является то, что повышая повторную используемость текстов программ, этот метод избегает многих проблем множественного наследования. Однако при этом метод накладывает свои ограничения.

Вообщем примеси это так сказать ООП как оно задумывалось изначально, а не как его реализовали создатели С++.

примеси поддерживают следующие языки:

  • Swift (в виде extension)

  • Kotlin (в виде extension)

  • Ruby;

  • D;

  • Dart;

  • Python;

  • Scala (в виде trait'ов);

  • XOTcl;

  • PHP;

  • Haxe;

  • Vala.

Статья в которой подробно рассматриваются преимущества интерфейсов Vala.

Атрибуты

Атрибуты указывают компилятору Vala детали о том, как именно должен работать код на целевой платформе. Их синтаксис прост: [AttributeName] или [AttributeName(param1 = value1, param2 = value2, ...)].

Они в основном используются для привязок в vapi файлах, [CCode(...)] наиболее используемый атрибут в них. Другой пример - атрибут [DBus(...)], используемый для экспортирования удалённых интерфейсов через D-Bus.

Примечание

Существует возможность создать компактный класс - он не наследуется от Object и следовательно имеет ограниченные возможности, инициализация членов таких классов будет выполнятся быстрее.

"Только классы GObject имеют свойства gobject (интроспектируемые во время выполнения). Эта особенность не выделена на изображении выше."

PreviousСтруктурыNextООП

Last updated 6 years ago

Was this helpful?