|
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
|
|||||||||||||||||||||
Люди не могу понять что это?05.06.2013, 08:47. Показов 2449. Ответов 15
Метки нет (Все метки)
Яву учу где-то 3 месяца уже и вот столкнулся вот с таким не понятным примеров :
Есть 3 класса Animals Dogs и Cats Dogs и Cats наследуються от Animals
Dogs Конструктор DogsEX: Dogs Конструктор : Cats Cats Конструктор CatEX: Cats Я ем как : Dogs Я ем как : Cats Как видно Dogs и Cats переопределяют метод Eat Но вот одно но ! Есть статический ArrayList<Animals> который в деф конструкторе Animals до кладет ссылку this в себя Но вот что мне не понятно : Как метод eating() вызывает полиморфные методы Cats и Dogs ??? Если в дефолтном конструкторе я указал ссылку this тоесть на данный момент , и так же как объект типа class в конструкторе Animals как то становиться объектом типо Dogs или Cats??? Я голову ломаю , не могу разобраться ... что же я упустил? P.S пример написал сам по типо другого примера... Добавлено через 7 минут Я знаю что сначала вызываеться Конструктор род класса затем вызывающего класса (тоесть дочернего), но Как Дефолтный Конструктор родительского класса становиться Дочерним ?? class.getSimpleName(); в конструкторе Род класса указывает на Дочерние классы... Объясните пожалуйста в чем дело ?) Добавлено через 11 часов 24 минуты Что не кто не знает? Если не понятный пример я могу написать по проще и без всяких class
0
|
|||||||||||||||||||||
| 05.06.2013, 08:47 | |
|
Ответы с готовыми решениями:
15
Не могу понять что это за операция? Не могу понять, что это за реализация ORM и как это работает
|
|
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
|
|
| 05.06.2013, 09:17 | |
|
Он НЕ становиться.
Они работают с объектами через и-с Animals, пользуясь только его методами ....
1
|
|
|
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
|
||
| 05.06.2013, 09:24 [ТС] | ||
|
0
|
||
|
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
|
|
| 05.06.2013, 10:24 | |
|
Вы путаете и-с и его реализацию.
Смотрите ... какая разница какой класс в и-се ? Главное при обращении к и-су - это параметры метода .. как он реализован - нас не касается никаким боком. Дальше - о реализации. Она никак не касается того, что в род. классе метод абстрактный ... с помощью this мы обращаемся к ТЕКУЩЕМУ объекту и работаем с ним ВНУТРИ. Добавлено через 1 минуту По к-ру - вообще непонятен суть Вашего вопроса. А почему он должен выдавать ИНОЕ ? Ведь у нас идет порождение класса Dogs и вызывается соот. к-р ...
1
|
|
|
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
|
|
| 05.06.2013, 10:41 [ТС] | |
|
Объясните пожалуйста что такое "и-су" и "к-ру" ?? Я не понял... Вроде "к-ру" это конструктор? а "и-су"?
Добавлено через 4 минуты [quote]Ведь у нас идет порождение класса Dogs и вызывается соот. к-р ...[/quote="edwin3d"] Но ведь конструктор Animals ,а не Dogs или Cats ...и класс другой должен быть ? Или же при объявлении Dogs extends Animals , Dogs сразу же получает и содержит Конструктор Animals? Тоесть дефолтный конструтор Animals становиться Дефолтным к-су Dogs? Тогда зачем при вызове к-ра Dogs вызывается сначало Деф-конструктор Animals , а затем Dogs? Добавлено через 5 минут Так уже начинаеться проясняться ... Значит this указывает на ТЕКУЩИЙ объект а не на КЛАСС? поэтому в статик методах нельзя использовать this... Но вот что не понятно как же в конструкторе Animals создаеться и добовляеться объект типа Dogs и Cats? Ведь получаеться при вызове конструктора Animals создаеться Объект Animals? Но как я знаю нельзя создать объект Абстрактного класса ... ааааа Мозг зарветься ща_)
0
|
|
|
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
|
|
| 05.06.2013, 10:52 | |
|
1) Интерфейс (и-с)
2) Конструктор (к-р) почему объект должен быть ДРУГОЙ ? .... мы создаем экземпляр класса Dogs. И потом помещаем его в список. Но при вызове eating() и т.д. мы с ним работаем через интерфейс Animals ... но сам объект от этого НЕ перестает быть Dogs. Теперь о порядке вызовов к-ров. 1) Сперва вызывается Animals 2) Потом уже Dogs Но тем не менее, при вызовах к-ра идет работа именно с экземпляром класса Dogs.
1
|
|
|
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
|
|||||||||||||||||||||||
| 05.06.2013, 12:58 [ТС] | |||||||||||||||||||||||
|
Насчет интрефесов... Откуда тут интерфесы?? У меня только абстрактный класс Animals но не интрейфес... или что я не понял? Добавлено через 2 минуты Добавлено через 4 минуты Как я понимаю : Сначало создаеться объект Animals (не понимаю как если Abstract классы не могу иметь эеземпляров) Затем создаеться Объект Dogs и в него так сказать Интегрируеться объект Animals ,что бы все его методы и переменные могли использоваться в дочерним классе... Я правильно понимаю? Добавлено через 14 минут Вот сделал болле простой пример: Класс Animals:
Конструктор Animals!!! вызываеться: Dogs Конструктор Animals!!! вызываеться: Cats Конструктор Animals!!! вызываеться: Animals Я ем как : Dogs Я ем как : Cats Я ем как :Animals Конструктор Dogs Конструктор Cats Ещё бывает что сначало вызываеться Конструктор Dogs а потом к-су Animals (редко),я так понял это из-за потоков ... И ещё как видем сначало создаються к-ры в Animals затем выводиться методом Eating все методы объектов в списке и ТОЛЬКО ЗАТЕМ вызываеться к-торы дочерних классов ! КАК ??? ЧТО ЭТО?) Добавлено через 37 минут Вроде бы я понял ... Если мы пишем ключевое слово extends <Объект> то мы просто копируем все члены класса (методы+ поля) родительского класса при том и Дефолтный КОНСТРУКТОР который теперь находиться уже в дочерним классе , а не в род классе! И поэтому при ссылке this добовляеться текущий объект,тоесть Dogs , или Cats , потому что Класс Animals ВОБЩЕ не вызываеться ! все что в нем есть , есть и в Дочерних классах! И как помним список у нас статический и при вызове в конструкторе Animal который мы уже знаем унаследован и находиться в Dogs или Cats и статические методы не наследуються , они находяться в 1 экземпляре ! и когда мы вызываем в деф конструкторе list.add(this); На самом деле мы вызываем Animals.list.add(this); просто это явно не видно ! Правильно ли я рассуждаю? Добавлено через 28 минут Теперь вроде разобрался... я думал привызове super(); Создаеться объект типа род класс и вызываеться его конструктор или типо того ... и я не не знал что КОНСТРУКТОРЫ тоже НАСЛЕДУЮТЬСЯ тоесть как бы они тоже методы и все конструкторы род класса наследються Дочерними классами... Вот в чем была моя проблема? Я думал что Конструкторы род класса вызываються от балды и даже не задумовался об этом и на самом деле рпи вызове дочернего класс (точней его экзеемпляра) мы Вызываем Род класс кторым он и являеться (is-a впрямом смысле ,а я думал это в переносном ) только с новыми методами если они есть и новым именим класса... Кто нибуть ответьте правильно я рассждаю плиз) Ото не могу дальше нечего делать) Постоянно думаю об этом) Добавлено через 11 минут Ещё Точней ))) Я думал что при вызове у объекта метод или переменную Род класса то Java загружает класс Род класса и с него все это использует не посрдественно ) кароче бред полный) Сорри за флуд) Кто нить ответит мне ааа?)
0
|
|||||||||||||||||||||||
|
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
|
|
| 05.06.2013, 13:20 | |
|
0
|
|
|
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
|
||
| 05.06.2013, 14:05 [ТС] | ||
|
Поскольку мы не определяли вообще никакого спецификатора, а это по умолчанию равно ключевому слову public, то подкласс SiemensM55, будет иметь доступ ко всем членам своего суперкласса Siemens. Разве дефолтный модификатор равен public??? Добавлено через 17 минут Но это все я знаю то ... Просто я не знал как Дочерний класс обращаеться к методам Супер класса... Я думал при каждом обращение к методу суперкласса , Java подгружает класс супер класса и в нем использует его . а на самом деле Все это (Родительчкий класс) копируеться в Дочерний класс ! Даже private Методы и Поля родительского класса есть в Дочернем ,но мы просто не можем получить к ним доступ... Ещё я не знал что Конструкторы тоже наследуються....
0
|
||
|
|
||||||
| 05.06.2013, 14:08 | ||||||
0
|
||||||
|
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
|
||
| 05.06.2013, 14:27 [ТС] | ||
|
приватный метод? И почему так?) Добавлено через 2 минуты Ведь модификатор private говорит что метод или переменная может быть использована только внутри класса? Или я не прав??
0
|
||
|
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
|
||
| 05.06.2013, 14:39 [ТС] | ||
|
Блин стоп это же иннер классы? Значит в этом подвох?
Добавлено через 4 минуты new InheritAll().new S1().priv(); Этот код Мне выдаст Ошибку типа : The method priv() from the type InheritAll.S1 is not visible Тоесть Метод priv() из типа InheritAll.S1 не виден... а вот через super он виден... Это касяк разрабов Java?
0
|
||
|
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
|
|
| 05.06.2013, 15:08 [ТС] | |
|
Так стоп The method priv() from the type InheritAll.S1 is not visible выводиться если я создам переменную типа InheritAll.S1 в другом классе , и как бы другом объекте ...
Я вот не понял одного : Я знаю что внутриний класс имеет доступ ко всем Членам внешнего класса, а вто Внешний класс имеет ли доступ ко всем Членам внутреннего класса? Добавлено через 6 минут Все разобрался InheritAll(){ S1 s = new S1(); s.priv(); } Приват методы вызываються из-за того что это внтуренние классы вызывающегося метода и он имеет доступ к ним так как они в 1 классе ... Я правильно понял? Добавлено через 2 минуты Можно даже так : void demo() { new S1().priv(); super.def(); super.priv(); super.pub(); }
0
|
|
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
|
| 06.06.2013, 14:26 | |
|
0
|
|
| 06.06.2013, 14:26 | |
|
Помогаю со студенческими работами здесь
16
Не могу понять что это за ошибка Не могу понять, что это значит: while(i<10/2)
Я не могу понять что делает данная программа. Точнее что делают функции используемые в это коде Подскажите что делать. Знаю что надо перегрузить оператор но никак не могу понять как это сделать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|