| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Проблема с созданием метода |
| Автор: FrenchCheese 19.11.2010, 13:20 | ||||
Только начал изучение Java, столкнулся с проблемой...
вот есть такой простенький класс и мне надо написать к нему методы начал с тестов попроще.. почему такой код не работает?
|
| Автор: Nofate 19.11.2010, 13:51 |
| Много почему. Например, строка 18. Вызывается метод add без указания экземпляра класса. Кроме того надо бы членам класса digit (а лучше переименовать его в Digit) установить спецификаторы доступа. |
| Автор: FrenchCheese 19.11.2010, 13:55 | ||
это как? и для чего добавлять спецификаторы доступа? зачем они здесь? |
| Автор: Nofate 19.11.2010, 15:09 |
| вы вызываете add(a, b). Как компилятор догадается в каком классе искать этот метод? |
| Автор: FrenchCheese 19.11.2010, 15:13 | ||
ага, мысль понял, но запутался... как таки ему дать понять где искать? что загуглить? что прочитать? |
| Автор: Nofate 19.11.2010, 15:46 | ||
| У вас есть класс digit. В общем случае вы можете обращаться к методам класса через экземпляры данного класса. Экземплярами класса digit в вашем примере будут как раз a и b. То есть вы можете написать:
Но тогда получается масло масляное. Ведь из метода add мы итак можем обратиться к значению члена a. Так что один параметр можно будет из метода add убрать, немного изменив его тело. Вобщем почитайте самые основы. Что такое классы и как именно они работают. И про ключевое слово this заодно. Почитать можно например http://www.intuit.ru/department/pl/javapl/2/3.html |
| Автор: FrenchCheese 19.11.2010, 15:49 | ||||
огромное спасибо! |
| Автор: duk 19.11.2010, 17:53 | ||
Что-то похожее, на Ваш код:
|
| Автор: Nofate 19.11.2010, 21:10 |
| @duk Ну вот, все испортили. А человек уже почти сам разобрался ) |
| Автор: nc30 20.11.2010, 10:14 |
| FrenchCheese, IMHO, Nofate, указал вам правильное направление. От себя добавлю пару слов. Не стоит без знания самых основ пытаться создавать свои примеры. Иначе с самого начала вы научитесь неправильно мыслить и плохо излагать свои идеи в коде. Переучиваться будет гораздо сложнее + потеряете время. Из хороших книг для обучения могу порекомендовать классический труд Кея Хорстманна и Гари Корнелла "Java 2. Том 1. Основы." (8-е издание). Для себя я охарактеризовал ее, как "продвинутый букварь". Кто-то рекомендует книгу Шилдта "Java. Руководство для начинающих". Лично я считаю, что лучше Хорстманн, т. к. Шилдт менее внятен и не так живо и полно излагает материал. После книги Шилдта я читал Хорстманна с гораздо большим удовольствием и пользой. Также считаю, что приведенный вами пример лучше оставить в покое (без попыток какой-либо модернизации): неоправданное использование вложенных классов, отсутствие какой-либо системы доступа к данным, нарушение уровней взаимодействия объектов (экземпляр класса (== объект) Digit не должен иметь возможности производить операцию сложения объектов Digit: это функциональность более высокого уровня) и т. п. Слишком много потребуется исправлений - это будет уже другой код Резюмируя: лучше начать с основ и начать правильно. Удачи |