Наследование классов

При объявлении, класс может наследовать (extends) один класс и реализовывать (implements) несколько классов или интерфейсов. Это значит, что он будет иметь несколько типов одновременно. Например:
    class D extends A, implements B, implements C {

    }
Получается, что каждый экземпляр класса D будет иметь тип D, но вы также сможете использовать его там, где требуются экземпляры A, B или С. Это значит, что каждый экземпляр D будет также иметь типы A, B и C. Расширение (наследование) Когда вы расширяете (extends) класс, ваш класс наследует все публичные и приватные не-статические поля. Поэтому вы можете использовать их в своём классе, как будто они были объявлены в нём. Также вы можете переопределить метод, заново описав его (для этого он должен иметь такое-же кол-во аргументов с теми же типами). Ваш класс не наследует статические поля. Из переопределённого метода, вы всё ещё имеете доступ к методу суперкласса, используя super :
    class B extends A {
        function foo() : Int {
            return super.foo() + 1;
        }
    }
В конструкторе вашего класса вы можете вызывать конструктор суперкласса, также используя super :
    class B extends A {
        function new() {
            super(36,"");
        }
    }
Реализация Если ваш класс реализует (implements) класс или интерфейс, ваш класс обязан реализовать все поля, объявленные или унаследованные реализуемым классом, с тем же типом и названием. При этом поле может уже быть унаследованным от суперкласса. Интерфейсы Интерфейсы это прототипы классов. Они объявляются с помощью ключевого слова interface. По умолчанию все поля интерфейсов являются публичными (public). Интерфейсы не могут иметь экземпляров.
    interface PointProto {
        var x : Int;
        var y : Int;

        function length() : Int;
        function add( p : PointProto ) : Void;
    }

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>.

Подробнее о форматировании

CAPTCHA
Этот вопрос помогает предотвратить автоматический спам
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.
To prevent automated spam submissions leave this field empty.