powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / overriding Vs overloading
17 сообщений из 42, страница 2 из 2
overriding Vs overloading
    #38638096
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

я вас понял, интересный взгляд)


статичность здесь причем потому, что она позволяет создать такую ситуацию. Как я понимаю по-иному эту ситуацию и не получить. Поправьте если что

Basil A. Sidorovтип, который не совместим по присваиванию с типом скрываемого метода

Что скажете насчёт:

Код: java
1.
2.
3.
4.
5.
6.
7.
class A{
    public static int m(Number n){System.out.println("Number A"); return 1;};
  
}
class B extends A{
    public static long m(Number n){System.out.println("Number B");return 1;};
}



авторjava: m(java.lang.Number) in inheritanceTest.B cannot override m(java.lang.Number) in inheritanceTest.A
return type long is not compatible with int
-------------------------------------------------




Код: java
1.
2.
3.
4.
5.
6.
7.
class A{
    public static long m(Number n){System.out.println("Number A"); return 1;};
   
}
class B extends A{
    public static int m(Number n){System.out.println("Number B");return 1;};
}



авторjava: m(java.lang.Number) in inheritanceTest.B cannot override m(java.lang.Number) in inheritanceTest.A
return type long is not compatible with int


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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
class A{
    public static Integer m(Number n){System.out.println("Number A"); return 1;};
  
}
class B extends A{
    public static int m(Number n){System.out.println("Number B");return 1;};
    
}




авторMain.java:20: error: m(Number) in B cannot override m(Number) in A
public static int m(Number n){System.out.println("Number B");return 1;};
^
return type int is not compatible with Integer
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638106
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу только повторить - компилятор не может перекрыть метод из-за несовместимых по присваиванию типов возвращаемых результатов.
То, что таблица статических методов существует только на этапе компиляции, никак не меняет ситуацию с нарушением интерфейса.
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638109
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

ну тогда напрашивается очевидный вопрос - что такое совместимость по присваиванию?

Код: java
1.
2.
3.
long myLong =1L;
int myInt  = 1;
myLong = myInt;

- ведь работает....
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638117
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90ну тогда напрашивается очевидный вопрос - что такое совместимость по присваиваниюЯ был неточен, а вы - невнимательны.
Сокрытие может произойти только при наследовании, поэтому не "по присваиванию", а "по наследованию" - те самые ковариантные тип.
У примитивов нет иерархии наследования и тип должны совпадать в точности.

P.S. Я ведь не зря именно такой пример привёл:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
class A {
  Object m(int i) {
    System.out.println("class A");
    return null;
  }
}
class B extends A {
  Class m(int i) {
    System.out.println("class B");
    return null;
  }
}
public class test {
  public static void main(String[] args) {
    A o = new B();
    o.m(0);
    ((B) o).m(0);
    ((A) o).m(0);
  }
}

Во-первых он компилируется, а во вторых - видно, что именно меняет модификатор static, если его указать.
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638131
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

Basil A. Sidorovне "по присваиванию", а "по наследованию"
о том и речь.

а какая связь с примером то?

Компилируя в уме полагаю, что в случае НЕ статик.

трижды выведено class B

в случае статик

class A
class B
class A


вот слово ковариантность меня всегда пугала...когда-то я думал, что это аналог слова "приводимость" Но как оказалось нет и вообще по отношению к java не уверен, что стоит его понимать. Если оно только для override/hide методов используется
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638133
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90а какая связь с примером то?В (вашем) примере придирка к слову override - вы считаете, что должно быть hide.
Я считаю, что компилятор совершенно законно использует override, т.к. имеет место быть попытка перегрузки интерфейса класса. Попытка, нарушающая правила наследования.

P.S. А компилируете вы правильно
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638136
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90вот слово ковариантность меня всегда пугала...когда-то я думал, что это аналог слова "приводимость" Но как оказалось нетВы как-то пугаете способностью делать странные выводы из верных предпосылок ...
С чего вдруг "нет"???
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638140
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
Basil A. SidorovС чего вдруг "нет"???

потому, что int приводим к long но не ковариантен ему!
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638149
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90потому, что int приводим к long но не ковариантен ему!Вы продолжаете пугать.
Ковариантность относится исключительно к объектам. Только у них есть иерархия наследования.
Примитивы не являются объектами. У них нет иерархии наследования. К ним не относится понятие ковариантности.
Хотите рассматривать числовые объекты - выбирайте правильное дерево .
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638156
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

приводимость бывает для объектов и для примитивов

---для объектов она называется ковариантность

---для примитов хрен знает как она называется

следовательно приводимость =! ковариантность
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638158
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

Basil A. SidorovВ (вашем) примере придирка к слову override - вы считаете, что должно быть hide.
Я считаю, что компилятор совершенно законно использует override, т.к. имеет место быть попытка перегрузки интерфейса класса. Попытка, нарушающая правила наследования

для override и hide даже правила вместе написаны. Так и называется раздел - правила для override and hide.

Ну я думаю, что тут уже наш спор себя исчерпал) хотелось бы услышать третью сторону
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638162
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

авторНу я думаю, что тут уже наш спор себя исчерпал

имеется ввиду по поводу overide/hide только
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638167
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90приводимость бывает для объектов и для примитивов
---для объектов она называется ковариантность
---для примитов хрен знает как она называется
следовательно приводимость =! ковариантностьВнимательно посмотрите на вторую и последнюю строки. Осознайте, что вы противоречите сами себе.
Правила совместимости по присваиванию для примитивов определяет язык, для объектов - иерархия наследования.
Так что в контексте объектов "совместимость по присваиванию", она же "приводимость", она же "ковариантность" - эквивалентны.
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638175
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

Basil A. SidorovТак что в контексте объектов "совместимость по присваиванию", она же "приводимость", она же "ковариантность" - эквивалентны.

только в контексте объектов!

для меня равенство это величина абсолютная во всех контекстах

то же самое сказать, что Object == String. String это Object, НО наоборот неверно.
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638195
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90только в контексте объектов!
для меня равенство это величина абсолютная во всех контекстахГде, пусть даже "только в контексте объектов" вы усмотрели "равенство" применительно к терминам "приводимость (по иерархии наследования)", "совместимость (по присваиванию)", "ковариантность (объектных типов)"??? Все три термина оперируют с ориентированным ацикличным графом (иерархией наследования). Коммутативность (арифметической) операции сравнения на таком графе не выполняется.
Вы уж, как-то, умерьте осетра категоричности.
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638209
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

вы сначала сами сказали, что
ВыТак что в контексте объектов "совместимость по присваиванию", она же "приводимость", она же "ковариантность" - эквивалентны.

потом я ответил:
автортолько в контексте объектов!

потом Вы:

Basil A. SidorovГде, пусть даже "только в контексте объектов" вы усмотрели "равенство" применительно к терминам "приводимость (по иерархии наследования)", "совместимость (по присваиванию)", "ковариантность (объектных типов)"???

как так то?


я лишь сказал, что
яприводимость =! ковариантность

ну то же самое если вас спросят List и LinkedList это одно и то же что вы ответите ?
...
Рейтинг: 0 / 0
overriding Vs overloading
    #38638427
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90ну то же самое если вас спросят List и LinkedList это одно и то же что вы ответите ?А вы не смешивайте "приводимость" и "равенство".
byte приводим к int, но не равен ему. При этом int не приводим к byte, т.к. для неявных преобразований типов вводится запрет на (возможную) потерю данных.
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / overriding Vs overloading
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]