FunAT92, напрямую никак нельзя получить, поля, объявленные как private доступны только внутри самого класса. Можно, однако, сделать в классе a метод public int getM() { return m; } Это называется getter, и такой прием очень часто используется. Без 7 и 8 главы (которые, как я понимаю, описывают классы), конечно, непросто придется, потому что, например, перегрузка методов обязательно используется в классе MIDlet. Можно, как вариант, продолжать изучать примеры, а уже потом вернуться к 7 и 8 главе. Но в любом случае их вряд ли получится опустить, ведь Java - это не С++, здесь не получится обойтись без объектно-ориентированных средств. Да и неудобно это, ООП - очень мощный механизм, который значительно упрощает программирование более-менее серьезых проектов при грамотном использовании.
Malcolm, спасибо за ответ. У меня тут еще вопросы: зачем надо наследование, если можно проста создать объект класса и получить его копию, зачем нужны абстрактные классы, зачем надо переопредиление методов, и что такое класс object и зачем он нужен. Спасибо!
FunAT92, да, объект класса ты можешь создать, но что если нужно, чтобы он работал как-то немного по-другому, при этом сохраняя большинство свойств? Пример самого простого абстрактного класса - Canvas из MIDP. Java-машина знает, как работать с этим классом, однако, когда требуется отобразить его на экране, вызывается абстрактный метод paint(), не определенный в самом классе. Ты его должен написать сам, чтобы в твоем классе, наследующем от Canvas, рисовалось то, что тебе нужно, а остальное Canvas (суперкласс) сделает за тебя: тебе не потребуется никакого кода, чтобы отслеживать нажатия клавиш, прикосновения стилуса, переключать полноэкранный режим и так далее. Поскольку Java-машина работает с классом Canvas, она знает, что в любом классе-наследнике paint() будет, и поэтому может его вызывать, хотя заранее и не знает, что именно он будет делать. Object - это класс, от которого автоматически наследуются все остальные классы.
FunAT92, на самом деле, любая переменная не элементарного типа - ссылочная. Когда создается объект оператором new, он хранится где-то в памяти, а напрямую с ним ты никогда не работаешь. Вместо этого ты получаешь ссылку на объект, значение которой можно присовить любой ссылочной переменной. По сути, ссылочная перменная говорит, где искать объект. При передаче объекта методу на самом деле передается ссылочная переменная, а не сам объект. На один и тот же бъект могут ссылаться и несколько переменных. Если метод что-то изменит в объекте, то через какую переменную ни обращайся, изменения будут заметны при обращении через любую переменную, которая ссылается на объект. О втором вопросе: да, можно, обычно классам дается модификатор public, но не всегда.
Чё за фигня! Создал я в форме менюшку, повесил 2 функции - ok и выход! Поставил так - Command ok = new Command("Ok",Command.OK,1); и Command Exit = new Command("Выход",Command.EXIT,2) На эмульке все нормально - ok справа, выход слева! Кидаю собранную прогу в тело w200, и облом - добавляется какая-то фигня ("Выбрать") на левый софт, которая не реагирует вообще! А мои функции кинулись все на правый софт! Че делать? Эта фигня тормозит производство!!
Malcolm, a методы класса оbject можно использовать визде, или только в наследовании? И как скомпилировать код? Как я понимаю, надо скачать jdk, wtk (netbeans), создать проект в втк (нетбинсе), куда-то положить исходники, и откомпилировать? Но как это сделать, я не знаю, даже в втк, не то чтоб в нетбинсе? Помоги, пожалуйста.
aNNiMON, выбрать появляется в List, если это в форме то страно. Command ok = new Command("Ok",Comm and.OK,1 ); для софтов помоему всегда должно быть ок. На какие кнопки ставит exit, back, cansol и др. мне и сомому интересно и я всегда "1" писал. Блок прослушивания писал для формы? Метод commandAction писал?
DDDEN!SSS, я ж не новик! Писал я все, и блок прослушки и commandAction! У меня как раз в List и появляется это, а в остальном норм! Типо так и должно быть? Я просто все проги делал либо в canvas и кидал в тело, либо с формой, но в тело не кидал, а на эмуле открывал!
DDDEN!SSS, та я по-разному пытался, всеравно не получается - все на правый софт вешается,или наверное так и должно быть или у меня тело форму не так понимает (что наврядли)!
21 авг 2008 в 09:36
public int getM() {
return m;
}
Это называется getter, и такой прием очень часто используется.
Без 7 и 8 главы (которые, как я понимаю, описывают классы), конечно, непросто придется, потому что, например, перегрузка методов обязательно используется в классе MIDlet. Можно, как вариант, продолжать изучать примеры, а уже потом вернуться к 7 и 8 главе. Но в любом случае их вряд ли получится опустить, ведь Java - это не С++, здесь не получится обойтись без объектно-ориентированных средств. Да и неудобно это, ООП - очень мощный механизм, который значительно упрощает программирование более-менее серьезых проектов при грамотном использовании.