LINUX.ORG.RU

Тип метода отличный от типа того же метода родительского класса

 


0

1

Как в Джаве сделать метод для класса, который бы возвращал значение отличного типа, от того же метода класса-родителя.

Что-то типа этого:

class A {
  public int foo();
}
class B extens A {
  public float foo();
}

Никак. Можно возвращать потомка того класса который родитель возвращает.

maxcom ★★★★★
()

Something like this:

abstract class Base {

    public abstract Number method();
}

class IntDerived extends Base {

    @Override
    public Integer method() {
        // do something
    }
}

class FloatDerived extends Base {

    @Override
    public Float method() {
        // do something
    }
}

В Java это называется ковариантные типы. Начиная с 5 версии (если я не ошибаюсь), можно выделывать такие финты. Метод clone в классе Object возвращает Object, а в подклассах, можно определить возвращаемый тип класса наследника.

anonymous
()
Ответ на: комментарий от anonymous

Ну вроде как тут речь о произвольных возвращаемых значениях, а не только о наследниках класса возращаемого методом родителем.

TheKnight ★★★
()
Ответ на: комментарий от TheKnight

Это один из способов решить проблему если идет речь о встроенных типах данных, таких как int, double и иже с ними. Естественно с ними такой фокус не пройдет.

anonymous
()

конечно это оффтопик, но такое желание похоже на желание написать говнокода
например принцип подстановки Лисков очевидно нарушается

anonymous
()

А зачем O_O?

AIv ★★★★★
()
Ответ на: комментарий от anonymous

+1, я слабо могу представить как такое бы работало. Тоесть если вызывать как parent, то будет производиться конвертирование. Не-не )

vertexua ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.