два метода могут иметь различный тип возвращаемого значения в методе, переопределяющем в Java [duplicate]

1

Я хочу спросить, что в методе переопределения метод может иметь другой тип возврата.

Напр.

class A{
    int x(){
       System.out.print("1");
    }
}

class B extends A{
    void x(){
       System.out.print("2");
    }
}

class C{
    public static void main(){
       A a = new B();
       a.x();
    }
}

Каким будет o/p и будет ли он называться переопределяющим.

  • 0
    Этот код не компилируется. Это почти всегда признак того, что вы что-то делаете неправильно.
Теги:
method-overriding

3 ответа

1
Лучший ответ

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

 class A{
  Object x(){
   System.out.print("1");
   }
  }

class B extends A{
 @Override
 String x(){
   System.out.print("2");
 }
}

Помимо этого отношения подкласса b/w типы возвратов, №.

  • 0
    Это правда. Следует отметить, что сигнатура лежащего в основе метода одинакова, поскольку по определению все подклассы определенного класса имеют свой унаследованный тип, поэтому это работает.
1

Вы не можете делать то, что вы здесь указываете, поскольку вы получите ошибку компилятора, указав, что ваш метод, который вы пытаетесь переопределить столкновения с новым определением, использует несовместимый тип возврата.

Чтобы переопределить метод, вам необходимо иметь такую же подпись метода. Вы можете использовать аннотацию @Override для проверки этого.

0

Никакой другой type return не является переопределением метода, проверьте, добавив аннотацию @Override

Ещё вопросы

Сообщество Overcoder
Наверх
Меню