| imho.ws |
![]() |
|
|
|
# 1 |
|
Member
Регистрация: 03.07.2003
Адрес: Voronezh, Russia
Пол: Male
Сообщения: 294
![]() ![]() ![]() |
Java. Проблема с классами.
Проблема в следующем: у класса reader не виден метод read.
Код:
public class reader
{
public static Vector read(String fileName, String charsetName)
{
...
}
public static Vector read(String fileName)
{
...
}
}
__________________
Это жжжж неспроста... |
|
|
|
|
# 2 |
|
Advanced Member
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498
![]() ![]() ![]() ![]() |
1. Не может быть! Как ты его пытаешься вызвать...
2. оформлять Java код таким образом - не культурно Классы нужно называть с большой буквы. Желательно чтобы имя класса, даже если он в пакете, не дублировало имени класса из стандартных пакеджей (это я про "reader")... ![]() Код:
1)
public class MyFileReader :biggrin: {
public static Vector read(String fileName, String charsetName) {
return new Vector();
}
}
2) из другого класса дергается
MyFileReader.read(fileName, encoding);
Надеюсь ты не в нотпаде пишешь
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|
|
|
|
# 3 | |
|
Advanced Member
Регистрация: 21.04.2005
Адрес: град Москва
Сообщения: 431
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
В книге "Секреты программирования на Java" читаю буквально следующее:
Цитата:
|
|
|
|
|
|
# 4 |
|
Advanced Member
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498
![]() ![]() ![]() ![]() |
Я бы сказал, что понимать это нужно не совсем так
![]() 1) Когда вы пишете просто public класс, то в любом случае можете создать объект через new , т.к. у любого объекта есть дефолтный конструктор без параметров... ну и соответственно можете получить через экземпляр класса доступ ко всем public методам и филдам... Обычно такие классы, в которых лежат только паблик методы, называют x...xTools, но это несколько не укладывается в ООП, т.к. возвращает нас к процедурному программированию... Если необходимо использовать в нескольких классах одни и те же ститк файнал филды, то для этого обычно делают интерфейс, в котором они описываются, и имплементят в классы, в которых необходимо использовать одни и те же данные... Но это имеес тмысл, если таких классов больше чем 2 ![]() 2) Модификатор static подразумевает следующее: все статик филды будут существовать в единственном экзмпляре в рамках одного процесса (это очень грубо говоря), т.е. если в каком-то объекте есть статический филд static String s = "stroka", то соответственно можно не создавая объект получить ссылку на этот филд и работать с ним, т.о. он будет один и тот же для всех эеземпляров этого класса - в одном экземпляре поменяли значение - поменялся для всех - именно так обычно делают кэширование некоторых переменных... надо быть осторожным Что касается статических методов, то ту все тоже самое - метод можно дергать не создавая экземпляров класса... Но при этом никто! не запрещает его перекрыть у наследника... Ведь вызывается-то он через имя класса, а не через созданый объект...3) Что касается модификатора final - необходимо понимать, что этот модификатор не позволяет изменить только ССЫЛКУ на объект, но отнюдь не блокирует для изменения содержимое этого объекта, к примеру содержимое public static final Map myMap = new HashMap(); всегда можно поменять - тут тоже необходимо быть осторожным и понимать что делаешь
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|
|