Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Перекрытие статик метода / 3 сообщений из 3, страница 1 из 1
29.07.2013, 09:20:28
    #38346994
AndreyDmt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрытие статик метода
Приветствую!
Вот обзадачил следующий собственный код.
Имеется примерно такой код: абстрактный класс и отнаследованный
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public abstract class ParentClass {
  public static final String param = "novalue";
  public static Map<Integer, String> getAccessParam() {
    return null;
  }
  ...
}

public class RealClass extends ParentClass  {
  public static final String param = "value1";
  public static final Map<Integer, String> getAccessParam() {
    ...;
  }
  ...
}


Суть: иметь возможность получать некие значения параметров до создания экземпляров классов. Есть дефолтное (у абстрактного класса) или устанавливается собственное для класса, если требуется.
Непонятно, почему final переменную удаётся переопределить в дочернем классе, а final метод - нет. Т.е. если поставить в абстрактном классе
Код: java
1.
2.
public static final Map<Integer, String> getAccessParam() {
};


в наследуемых классах возникает ошибка Cannot override final metod... Логичнее было бы выдавать ошибки и там и там, или не выдвать её совсем.
...
Рейтинг: 0 / 0
29.07.2013, 09:33:39
    #38347006
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрытие статик метода
Добрый день, AndreyDmt!

> Суть: иметь возможность получать некие значения параметров до создания
> экземпляров классов.

В java нет статических виртуальных методов, в отличии от delphi, к
примеру. Поэтому есть одно решение- аннотации.
Определяете свою, навешиваете на класс/метод/переменную, после чего
методом получаете значение.

--
Алексей
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.07.2013, 09:35:21
    #38347008
maxkar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перекрытие статик метода
AndreyDmt,

Непонятно, почему final переменную удаётся переопределить в дочернем классе, а final метод - нет
Потому что переменную переопределить нельзя. В дочернем классе создается еще одна переменная с тем же именем (и типом). Так что final имеет совершенно разное значение для переменных и методов. final varable - это так, которая не меняет свое значение после инициализации. final method - это метод, который нельзя переопределить в дочерних класах.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Перекрытие статик метода / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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