Как вернуть другой тип из переопределенного метода? - PullRequest
0 голосов
/ 14 января 2010

Я расширяю класс R3 прямоугольника AS3 классом Bin. Я хочу переопределить метод Rectangle clone () методом, который возвращает объект Bin, а не объект Rectangle. Если я пытаюсь переопределить метод клона, но в качестве возвращаемого типа указываю Bin, я получаю ошибку # 1023: несовместимое переопределение. Вот мой класс бин:

package {

    import flash.geom.Rectangle;

    public class Bin extends Rectangle {

        public function Bin(x:Number = 0, y:Number = 0, width:Number = 0, height:Number = 0) {
            super(x, y, width, height);
        }

        override public function clone():Rectangle {
            return new Bin(x, y, width, height);
        }

    }

}

Этот класс работает, но когда я использую метод clone () для создания нового экземпляра Bin, я получаю ошибки типа при попытке использовать методы Bin в новом экземпляре.

Как мне переопределить clone () и отправить фактический экземпляр Bin?

1 Ответ

3 голосов
/ 14 января 2010

Технически, вы не можете изменить сигнатуру при переопределении метода. В вашем случае, однако, это не огромная проблема. Вам просто нужно привести полученный объект к типу Bin после вызова метода clone.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...