Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Todini
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 56
1

Конструктор класса

12.02.2017, 16:16. Просмотров 841. Ответов 13
Метки нет (Все метки)

Здравствуйте!
Код:
Java
1
Map<String, Integer> hashMap = new HashMap<String, Integer>();
Почему сигнатура конструктора HashMap отличается от имени класса Map?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2017, 16:16
Ответы с готовыми решениями:

Конструктор класса
Доброго времени суток! :) Готовлюсь к OCA и возник такой вопрос: public class...

Наследуется ли конструктор базового класса?
Вот такой вопрос по java, что то слышал про слово SUPER это из той оперы ?...

Про конструктор базового класса
Подскажите пожалуйста зачем при наследовании класса нужно обязательно в...

Конструктор родительского класса с аргументом
abstract class Animal { private String name; public String getName() {...

Конструктор использующий массив объектов супер класса
public class FunctionPoint { private double x,y; public void...

13
reisal78
907 / 657 / 221
Регистрация: 28.04.2013
Сообщений: 1,864
12.02.2017, 17:12 2
Todini, что вы подразумеваете под выражением "сигнатура конструктора"?
0
xoraxax
1441 / 1339 / 400
Регистрация: 05.07.2013
Сообщений: 6,502
Завершенные тесты: 2
12.02.2017, 17:12 3
сам понял, что написал?
0
ninjacut
149 / 149 / 51
Регистрация: 30.04.2016
Сообщений: 321
12.02.2017, 18:46 4
Todini, Map - это интерфейс
0
Tuxedo Mask
23 / 23 / 31
Регистрация: 04.10.2016
Сообщений: 85
12.02.2017, 20:02 5
иерархия
0
Миниатюры
Конструктор класса  
Todini
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 56
12.02.2017, 22:14  [ТС] 6
Благодарю за Ваши ответы!
Я только изучаю Java.

что вы подразумеваете под выражением "сигнатура конструктора"?
Насколько понимаю, интерфейсы содержат только сигнатуры методов без реализации. Разве конструктора нет среди них?

сам понял, что написал?
Если это мне, что я имею в виду, указал выше.
Map - это интерфейс
Т.е., если создается объект класса, реализующего интерфейс, то тип объекта соответствует интерфейсу, а не типу класса?
иерархия
Спасибо! Можно ли генерировать диаграмму отношений классов в Eclipse?
0
vcrop
220 / 180 / 81
Регистрация: 14.06.2016
Сообщений: 398
13.02.2017, 10:43 7
Цитата Сообщение от Todini Посмотреть сообщение
Т.е., если создается объект класса, реализующего интерфейс, то тип объекта соответствует интерфейсу, а не типу класса?
Нет. В твоем случае здесь восходящее преобразование к интерфейсу.
Java
1
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
будет без ошибки компиляции.
0
Todini
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 56
14.02.2017, 20:17  [ТС] 8
Благодарю за ответ!
В чем отличие объявлений? :
Java
1
2
Map<String, Integer> hashMap = new HashMap<String, Integer>();
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
Если Map -интерфейс, то возможно объявить объект интерфейса, а не класса? При этом конструктор класса HashMap.
0
xoraxax
1441 / 1339 / 400
Регистрация: 05.07.2013
Сообщений: 6,502
Завершенные тесты: 2
14.02.2017, 20:37 9
Цитата Сообщение от Todini Посмотреть сообщение
Map<String, Integer> hashMap
в hashMap можно положить любой объект, который реализует интерфейс Map - тебя не волнует фактическая реализация, ты знаешь, что можешь вызвать методы, которые описаны в Map - все остальное не важно
Цитата Сообщение от Todini Посмотреть сообщение
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
в hashMap можно положить только HashMap.
Возьми книжку какую-нибудь почитай что ли.
0
Todini
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 56
15.02.2017, 00:23  [ТС] 10
Благодарю за ответ.
Насколько понял, в
Java
1
Map<String, Integer> hashMap
hashMap - это интерфейсная ссылка, тогда как в
Java
1
HashMap<String, Integer> hashMap
hashMap - это объект класса. Я прав?
0
korvin_
2231 / 1731 / 327
Регистрация: 28.04.2012
Сообщений: 6,130
15.02.2017, 08:53 11
Цитата Сообщение от Todini Посмотреть сообщение
Я прав?
Нет. И то, и другое --- объект класса.

Добавлено через 1 минуту
http://courses.cs.washington.edu/cou...ic-typing.html
0
Tyrannosaurus
5 / 5 / 2
Регистрация: 26.01.2013
Сообщений: 18
15.02.2017, 10:07 12
Лучший ответ Сообщение было отмечено Todini как решение

Решение

Цитата Сообщение от Todini Посмотреть сообщение
Java
1
Map<String, Integer> hashMap
hashMap - это интерфейсная ссылка, тогда как в
Java
1
HashMap<String, Integer> hashMap
hashMap - это объект класса. Я прав?
Не путайте переменные и экземпляры объектов. Переменная, хотя и относится к определенному типу, но вообще говоря, может содержать объекты разных классов. Переменная типа Object, например, может содержать объекты вообще любого класса.
В вашем первом случае переменная относится к интерфейсному типу Map. Ей в качестве значения можно присваивать любой объект любого класса, реализующего интерфейс Map, в т. ч. HashMap.
Во втором случае переменная имеет тип HashMap. Ей можно присваивать объекты самого класса HashMap, а также любого из его потомков -- но нельзя присвоить значение объекта, не входящего в эту иерархию (HashMap и его потомки), пусть даже и реализующего интерфейс Map.
Но в любом случае значением переменной будет объект (т. е. экземпляр) какого-то конкретного класса (по сути дела, ссылка на объект, хотя в Java не принято так выражаться). Экземпляров интерфейсных типов и "интерфейсных ссылок" не бывает, есть только объекты каких-то классов, а тип переменной определяет множество классов, экземпляры которых могут быть ее значениями.
1
Todini
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 56
15.02.2017, 21:17  [ТС] 13
Благодарю за ответ.
Насколько понял, мы имеем ввиду одинаково, разница в терминологии. Я использую термнологию из книги Шилдт "Java. Руководство для начинающих" 5-е изд., страница 299 https://vk.com/doc44301783_382274697...f7e0491e5a13c4
0
korvin_
15.02.2017, 21:31     Конструктор класса
  #14

Не по теме:

На Шилдта давно пора пожаловаться в РКН, чтобы его книги запретили к продаже.

0
15.02.2017, 21:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2017, 21:31
Привет! Вот еще темы с ответами:

Конструктор элементов массива объектов класса в цикле
Подскажите, возможно ли как то вызывать конструктор в цикле? Где ни посмотрю,...

Подскажите, где нужно искать конструктор класса Object?
Всем привет! Изучаю java совсем недавно. Заинтересовал один фундаментальный...

Как при создании экземпляра класса инициализировать переменные вложенного класса
Здравствуйте. Подскажите пожалуйста как при создании екземпляра класа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru