|
1 / 1 / 0
Регистрация: 05.07.2017
Сообщений: 8
|
||||||
Экземпляр абстрактного класса06.07.2017, 04:09. Показов 2996. Ответов 13
Метки нет (Все метки)
Если зугуглить по тегу "абстрактный класс", черным по белому будет написано "Создавать экземпляры абстрактного класса нельзя". А теперь кусок кода который точно работает, потому что писал его не я.
0
|
||||||
| 06.07.2017, 04:09 | |
|
Ответы с готовыми решениями:
13
Существует ли экземпляр класса? Краш приложения при вызове метода из другого класса через экземпляр Создать экземпляр одного класса в Main, и передать его в экземпляр другого класса |
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
||
| 06.07.2017, 05:43 | ||
Сообщение было отмечено korvin_ как решение
РешениеКстати говоря, тоже самое можно делать и с интерфейсами. Можно вынести имплементацию интерфейса в отдельный файл классом, дать ему имя и использовать, а можно и "создать на ходу", просто определив методы интерфейса.
0
|
||
|
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
|
|||||||
| 06.07.2017, 12:16 | |||||||
|
должно быть так:
0
|
|||||||
|
1 / 1 / 0
Регистрация: 05.07.2017
Сообщений: 8
|
|
| 06.07.2017, 14:52 [ТС] | |
|
LeX, согласен)
dalay_lama, Про анонимные классы слышал и понимаю, что чтобы не писать лишний и ненужный код создается анонимный класс и оверрайдится на месте, не отходя от кассы. Но это знание не избавляет меня от чувства когнитивного диссонанса, так как в моем понимании интерфейс, без ошибок компиляции, может мирно сосуществовать только со словом implements, но ни как не new. Понятно что в "new ActionListener()" нет имени класса, так как он анонимный, это логично, но почему там нет слова implements мне не ясно, потому что это именно то что нужно делать с интерфейсами, реализовывать.
0
|
|
|
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
|
||||||
| 06.07.2017, 15:12 | ||||||
0
|
||||||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
|
||
| 06.07.2017, 18:22 | ||
|
0
|
||
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|||||
| 07.07.2017, 05:12 | |||||
|
прислушайтесь к korvin_, А когда мы создаём анонимный класс для интерфейса/абстрактного класса очевидно, что мы имплементируем/реализовываем указанный интерфейс/абстрактный класс, зачем там слово implement? всё равно что, масло масленое грубо говоря Если простыми словами, когда ты пишешь "ActionListener listener = new ActionListener() {...}", ты говоришь "хей, я хочу создать объект listener, который будет имплементировать интерфейс ActionListener", java - "окей, без проблем, только у твоего объекта должен быть реализован метод actionPerformed, давай создадим анонимный класс, с реализацией этого метода и на основе этого класса, я тебе создам объект". И пишется конструкция, которая у тебя указана в старттопике. Когда ты такое напишешь и скомпилируешь, java этот твой аннонимный класс всё равно выделит в отдельный файл, как-будто если бы ты его описал в обычном стиле, с выносом в отдельный файл и с твоим любимым словом implements (Пусть здесь гуру меня поправят, я не силён в том, как java такие моменты обрабатывает, но думаю, что приблизительно это так и выглядит). В общем, в итоге, это почти тоже-самое, просто описывается по другому.
1
|
|||||
|
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
|
||
| 07.07.2017, 10:01 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 05.07.2017
Сообщений: 8
|
|
| 07.07.2017, 15:06 [ТС] | |
|
dalay_lama, Кажется я начинаю понимать.
Учу язык по книге Сьерра, Бейтс - Изучаем Java. Язык не повернется сказать, что это плохая книга, потому что книга просто шикарная. Но в теме про внутренние классы был приведен пример простенькой анимации и фраза типа "мы привели этот пример лишь для демонстрации возможностей внутреннего класса, вряд ли вы будете создавать игры". Ирония в том, что это как раз то, чем я бы и хотел заниматься, в контексте программирования. Написание приложений и игр. Но там по этой теме голяк. В ютубе я нашел несколько подробных уроков, но без теор базы они не сильно то и полезны. Есть ли какая-то книга или сборник статей касательно этой тематики? Стратегия буферизации,работа со спрайтами, многопоточность и т.д? Пытаюсь учить кусками то тут то там и знаний вроде прибавляется, в чужом коде все меньше незнакомых слов и конструкций, но полной картины не выстраивается. Звенья есть, но цепь сделать не могу. Я инженер электрик и не собираюсь этим на хлеб зарабатывать, по крайней мере пока не собираюсь, но я ОЧЕНЬ хочу разобраться в этом. Есть на примете какие либо источники информации? Буду очень благодарен. Добавлено через 16 минут Я к тому клоню, что много людей, реально очень много, занимаются созданием игр и приложений. Но я не нашел действительно исчерпывающего источника на эту тему и это странно. Например, очень много людей покупают квадрокоптеры, но делают их единицы и тем не менее есть куча инфы о том как его собрать с нуля (DIY), так подробно что повторить (и понять большую часть) сможет даже гуманитарий. То же касательно ЛБП, как часто вы видели самодельные лабораторные блики питания? И таких примеров масса, когда существует много информации на весьма специфическую тематику. А теперь взгляните на AppStore, iTunes, Steam и пр. Там же пруд пруди игр и приложений, и пишут их все кому не лень. Как они это делают и что я делаю не так? Или нужно просто набрать критическую массу знаний и этот процесс станет на столько очевидным, что не понадобится доп информация?
0
|
|
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
| 07.07.2017, 16:20 | |
|
ilyash550, к сожалению я никогда не занимался разработкой игр, на работе я в основном занимаюсь созданием серверных и desktop приложений, да и честно говоря не читал не одной книжке по java, но я до этого изучал c++ и понимание основ ООП у меня было, поэтому я учился на примере статей в интернете и документации к библиотеками.
На вашем месте я бы пока не брался за разработку игр, все таки для создания такого рода приложений нужно хорошо плавать в этой теме, а судя по вашему вопросу старт-топика вы только начали изучать java, поэтому логично было бы быть последовательным. Изучите основы, я так понимаю у вас не возникает вопросов что такое функция, переменная, массив? Если да то расширяйте понимание ООП наследование/полиморфизм/инкапсуляция, изучите настолько глубоко, чтобы вас не пугали конструкции такого вида, которые были в вашем вопросе. После, изучайте основные моменты, которые сейчас используются во всех современных приложениях: работа с СУБД, чтение внешних файлов и т.д. попробуйте создать приложение с графическим интерфейсом, я бы для создания графических приложений я бы посоветовал использовать javafx т.к. если мне не изменяет память его же можно и использовать для создания android приложений там же можно будет и попрактиковаться в многопоточности(обновление в фоне и т.д.)....так же изучайте паттерны программирования. Очень советую поиграться со spring-ом + различные ORM библиотеки(но это уже когда будете уверено чувствовать себя в java). Конечно, можно и сразу начать пытаться писать игры по примерам (youtube, хабр, статьи), но думается мне большинство вещей вам будет казаться магией и не будет понимания того, как это работает, отсюда и будут проблемы рода, что когда что-то понадобится, чего не было описано в источнике вдохновения вы застрянете и даже не будете знать с какой стороны копать и будут появляться нелепые посты на этом форуме но если вы хорошо будете знать основы, вы хотябы сможете правильно формировать вопросы Гуглу/форумуВ общем, моя мысль - идите от простого к сложному, последовательно. А по поводу литературы, здесь на форуме уже давным давно лежит список от новичков до профи, смотрите в разделе java, люди специально для вас старались)
0
|
|
|
1 / 1 / 0
Регистрация: 05.07.2017
Сообщений: 8
|
|
| 07.07.2017, 17:59 [ТС] | |
|
dalay_lama, Спасибо за отзывчивость, буду стараться. Проблема в том, что в процессе муторного, нудного изучения материала без должной практики интерес теряется. Начал изучать java в октябре и менее чем через месяц завяз в теории. Я вроде бы все понимаю, но в то же время отдаю себе отчет о том, что это не столько понимание сколько знания и фундамент очень хрупок. Не зная как реализовать эти знания на практике энтузиазм терялся и я попросту забил. Недавно защитился и так сложилось, что моя работа была связана с программированием микроконтроллеров (pic 16). Мне понравилось, я решил поглубже в этом порыться, кое что сделал на ардуино. Заказал кучу ништяков с али и пока жду посылку решил поучить десктопное программирование. И вот опять, те же грабли.
0
|
|
|
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
|
|
| 07.07.2017, 18:35 | |
|
ilyash550, да, понимаю вас, той же проблемой страдаю, вроде бы и хочется что-то новое изучить но без конкретной задачи это таким остаётся на уровне хотелки, мне работа помогает.
Попробуйте самому себе задачу придумать. Допустим тот же todo лист, начните с консольного приложения, напишите программу, которая будет запрашивать ввод наименования задачи и сохранять её в массив, чтобы была возможность просмотреть список введенных задач, добавить новую, удалить и т.п.. потом развивайте эту задачу, сделайте так, чтобы программа могла считвать из файла и сохранять туда же введенные задачи, в xml формате. Потом нарисуйте графический интерфейс для этого, потом перенесите сохранение из файла в какую-нибудь СУБД и т.д. и т.п. По ходу выполнения этого, вы освоете основные принципы и дальше будет проще разбираться с более сложными вещами
0
|
|
|
1 / 1 / 0
Регистрация: 05.07.2017
Сообщений: 8
|
|
| 07.07.2017, 19:18 [ТС] | |
|
dalay_lama, это я легко сделаю. Консоль - пройденный этап, чтение и запись в файл .txt могу реализовать с помощью объектов Scanner и Formatter, на днях чисто ради прикола, после того как заново повторил JFrame (в октябре я про него читал но почти все забыл) написал крестики нолики c guy. java.swing. Основы и концепцию ООП вроде понял (если сравнивать с процедурным стилем - еще как понял), инкапсуляция, полиморфизм, наследование - с эти тоже вроде понятно. Кое как понял потоки, BufferStrategy и Timer который из java.swing, собственно оверрайд анонимного класса меня сюда и привел. Хотя вот тут тоже есть нюанс, не понимаю в чем разница создания таймера через реализацию интерфейса Runnable и наследованием Thread. Единственное что уловил - если наследовать то можно в конструкторе "инициализировать" таймер (не уверен, что это корректное выражение). В обоих вариантах нужен метод run() и в обоих вариантах нужно будет создавать экземпляр класса. В чем разница и зачем нужно 2 способа - не понял.
0
|
|
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
|
|
| 07.07.2017, 22:01 | |
|
0
|
|
| 07.07.2017, 22:01 | |
|
Помогаю со студенческими работами здесь
14
Методы абстрактного класса
Передача параметров методу абстрактного класса с интерфейсом Приведение массива экземпляров абстрактного класса к массиву интерфейсов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|