![]() |
Java. Проблема с классами.
Проблема в следующем: у класса reader не виден метод read.
Код:
public class reader |
1. Не может быть! Как ты его пытаешься вызвать...
2. оформлять Java код таким образом - не культурно :) Классы нужно называть с большой буквы. Желательно чтобы имя класса, даже если он в пакете, не дублировало имени класса из стандартных пакеджей :contract: (это я про "reader")... :biggrin: Код:
1)Надеюсь ты не в нотпаде пишешь :) |
В книге "Секреты программирования на Java" читаю буквально следующее:
Цитата:
|
Я бы сказал, что понимать это нужно не совсем так :)
1) Когда вы пишете просто public класс, то в любом случае можете создать объект через new , т.к. у любого объекта есть дефолтный конструктор без параметров... ну и соответственно можете получить через экземпляр класса доступ ко всем public методам и филдам... Обычно такие классы, в которых лежат только паблик методы, называют x...xTools, но это несколько не укладывается в ООП, т.к. возвращает нас к процедурному программированию... Если необходимо использовать в нескольких классах одни и те же ститк файнал филды, то для этого обычно делают интерфейс, в котором они описываются, и имплементят в классы, в которых необходимо использовать одни и те же данные... Но это имеес тмысл, если таких классов больше чем 2 :) 2) Модификатор static подразумевает следующее: все статик филды будут существовать в единственном экзмпляре в рамках одного процесса (это очень грубо говоря), т.е. если в каком-то объекте есть статический филд static String s = "stroka", то соответственно можно не создавая объект получить ссылку на этот филд и работать с ним, т.о. он будет один и тот же для всех эеземпляров этого класса - в одном экземпляре поменяли значение - поменялся для всех - именно так обычно делают кэширование некоторых переменных... надо быть осторожным :) Что касается статических методов, то ту все тоже самое - метод можно дергать не создавая экземпляров класса... Но при этом никто! не запрещает его перекрыть у наследника... Ведь вызывается-то он через имя класса, а не через созданый объект... 3) Что касается модификатора final - необходимо понимать, что этот модификатор не позволяет изменить только ССЫЛКУ на объект, но отнюдь не блокирует для изменения содержимое этого объекта, к примеру содержимое public static final Map myMap = new HashMap(); всегда можно поменять - тут тоже необходимо быть осторожным и понимать что делаешь :) |
| Часовой пояс GMT +4, время: 06:17. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.