imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 20.11.2006, 23:29     # 1
sealmu
Guest
 
Сообщения: n/a

Question JAVA JAVA JAVA

Как в java определить(специфицировать) метод класса в package чтобы при наследовании класса он сохранялся но не был виден из другого класса в данном package, в отличии от protected?
 
Старый 21.11.2006, 01:22     # 2
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
модификатор public - класс видно из всего приложения
package local (default) - инстанс класса можно создать только в данном пакадже
модификатор protected - видно только наследникам
модификатор private - видно только внутри класса

то что ты хочешь сделать - можно добиться грамотным распределением классов по пакетам, больше никак... т.е. кладешь в самый глубокий пакадж классы с пакадж локал доступом, а наследников кладешь в пакадж уровнем выше... вложенность только в глубину работает
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
/7y3uK вне форума  
Старый 22.11.2006, 00:52     # 3
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Напишу в эту темя, тоже появе...


Короче проблемма такая.... в одном классе создан инт массив, этот же массив нужен и в другом классе, но когда я к нему обращаюсь, топишется java.lang.NullPointerException

Вообшем структура кода примерно такая -

public class first
{
public static int [][]massiv;
public static void main(String[] args)
{
int[][] massiv = new int[count][2];
//zapolnjajetsja massiv
}
}

class second
{
public void
{
System.out.println(first.massiv[0][0]);
}
}
alexksei вне форума  
Старый 22.11.2006, 01:56     # 4
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
alexksei
А где создание объекта класса first? Или, раз у тебя в нем все сделано как static, то как минимум где вызов метода main, создающего (выделяющего память под) этот массив? Если нигде нет, то очень даже правильно ругается на NullPointerException.
ЕЖ вне форума  
Старый 22.11.2006, 02:23     # 5
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Нету ни обьекта класса first, ни вызова метода майн....

А как это делается ? ... Ну если не сложно, обьясни как сделать и первое и второе

Сразу еще один вопрос - у меня есть куча комбобоксов, текстфилдов и одна кнопка, при нажатии на которую должно считываться содержимое всех комбобоксов и текстфилдов.... Вообшем я в состоянии сделать только считывание с конкреного обьекта на котором произвелось действие...

class guiexampleFrame extends JFrame implements ActionListener {
guiexampleFrame()
{
JComboBox maakond = new JComboBox(maakonds);
maakond.addActionListener(this);
buttonpanel.add(sorteerimine);
buttonpanel.add(maakond);
buttonpanel.add(otstarve);
buttonpanel.add(veekogu);
buttonpanel.add(textfield1);
buttonpanel.add(textfield2);
}
public void actionPerformed(ActionEvent e)
{
JComboBox cb = (JComboBox)e.getSource();
selectedItems[0]= (String)maakond.getSelectedItem();
System.out.print(selectedItems[0]);
}
alexksei вне форума  
Старый 22.11.2006, 02:28     # 6
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Раз по какой-то причине ты объявил в первом классе все как static, то создавать объект класса first не надо, но память под массив надо выделить - это у тебя делается в методе main. Только не понятно что у тебя там за count.

Вызов метода main - это просто first.main(...). Но только опять же, судя по аргументам метода main класса first можно судить что это метод у тебя должен вызываться сразу при запуске программы, и массив у тебя должен сразу создаться. Тогда где вообще у тебя создается объект класса second чтобы пользовать массив в классе first?

Это у тебя полный текст программы? Что ты хочешь осуществить и чем руководствовался, когда писал ту путаницу, что привел здесь?
ЕЖ вне форума  
Старый 22.11.2006, 02:41     # 7
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
НУ ессно текст не полный далеко, просто текст программы слишком большой и там много лишнего, не относящегося к проблеме....я просто общую структуру изобразил, чтоб было понятно откуда и куда следует массив...

main -запускается сразу, webcontent считывает файл(каунт - колво строк нужных, которые буду в массиве), они забиваются в массив, далее guiexamplFrame создает все кнопки и так далее, и exampleCanvas класс - его назначение нарисовать график по числам из массива....

Вообшемто программа выглядить даже чуть подругому, может это както прояснит ситуацию -

public class first
{
public static int [][]massiv;
public static void main(String[] args)
{ ....
webcontent();
.....
JFrame frame = new guiexampleFrame();
....
}
webcontertnt{
.....
int[][] massiv = new int[count][2];
...
//zapolnjajetsja massiv}
}
}

class guiexampleFrame extends JFrame implements ActionListener {
....
guiexampleFrame() {
.......
drawpanel = new examplecanvas();}}


class examplecanvas extends Canvas {
....
public void paint(Graphics g) {
{.....
System.out.println(first.massiv[0][0]);
}
}


Вот.. более подробная схема, может поможет пролить свет....Если надо, то могу прислать полную версию программы....Ну очень надо мне её закончить....


Прикрепил код, там сильная каша, много всяких ненужных переменных и прочего, не обращайте внимания )) Главное - помогите
Вложения
Тип файла: rar Vorgurakendus.rar (3.6 Кбайт, 3 просмотров - Кто скачивал? )

Последний раз редактировалось alexksei; 22.11.2006 в 19:18.
alexksei вне форума  
Старый 22.11.2006, 13:01     # 8
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Попробуй сделать другой пример без всего лишнего. Так проще заставить работать. А потом можно сравнивать с большим кодом.
EvroStandart вне форума  
Старый 22.11.2006, 18:59     # 9
HotSpot
Newbie
 
Аватар для HotSpot
 
Регистрация: 18.04.2003
Адрес: Moskow
Сообщения: 49

HotSpot МолодецHotSpot МолодецHotSpot Молодец
alexksei:public static int [][]massiv;

попробуй убрать static, а к массиву обращаться по ссылке на него (передать через параметр)
__________________
Требования террористов о выкупе выполнены. Террористы выкупаны и уложены баиньки.
HotSpot вне форума  
Старый 22.11.2006, 19:14     # 10
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
Цитата:
Сообщение от hd
alexksei:public static int [][]massiv;

попробуй убрать static, а к массиву обращаться по ссылке на него (передать через параметр)

Нет, так тоже не получится, обращение к тому классу идет еще из другого класса.... Вообшем эту проблемму решил, воспользовался аррейлистами, не знаю почему, но с ними такой проблеммы не было....


Проблеммы с actionlistener так и осталась.... не могу сделать так чтобы при нажатии на кнопку считывалось все что введено в остальных комбобоксах и текстфилдах
alexksei вне форума  
Старый 23.11.2006, 01:01     # 11
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
alexksei
У тебя вообще какая-то ерунда написана в коде. В классе guiexampleFrame ты описываешь свои сомбобоксы и текстфилды как _члены_ класса.
Код:
    JTextField textfield1, textfield2, textfield3;
    JComboBox maakond,otstarve,veekogu,sorteerimine;
Затем почему то не создаешь эти объекты, а создаешь другие с теми же именами, но как локальные переменные метода main
Код:
        JComboBox maakond  = new JComboBox(maakonds);
        JComboBox otstarve  = new JComboBox(otstarved);
        JComboBox veekogu  = new JComboBox(veekogud);
        JComboBox sorteerimine  = new JComboBox(sorteerimised);
Ты их уже объявил как члены класса, тебе надо их просто создать.

Потом, раз они будут членами класса, то и доступны они будут в любом методе этого класса. В том числе в обработчике события actionPerformed(ActionEvent e). И тебе не надо пататься вытащить их из аргумента события
Код:
(JComboBox)e.getSource()
тем более что там Source вероятнее всего будет не JComboBox, а JButton. Нужно просто тупо написать что-то типа
Код:
        selectedItems[0]= (String)maakond.getSelectedItem();
        selectedItems[1]= (String)otstarve.getSelectedItem();
        ...
для всех нужных тебе комбобоксов и текстфилдов, объявленных в твоем классе, и созданных в main.
ЕЖ вне форума  
Старый 23.11.2006, 01:53     # 12
alexksei
Newbie
 
Регистрация: 19.11.2004
Сообщения: 45

alexksei Нуль без палочки
ЕЖ, ОГРОМНОЕ спасибо, еслибы ты знал сколько я времени убил на это, топтался на одном месте .... Значит и с массивом была таже проблемма, я его обьявлял там, а создавал другой с тем названием просто =))

ТОлько как создать массив то правильно чтоб он был именно то ?

Я делал так -
public static int [][]allMassiv; - в классе

int [][]allMassiv = new int[count+1][2]; - это уже в майн, когда нашел каунт... но видимо создается другой массив с такимже названием опятьже....
alexksei вне форума  
Старый 23.11.2006, 02:15     # 13
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Раз у тебя одна размерность константная, то напиши что-то типа
Код:
class myClass 
{
    static int [][] myArray = new int[2][]; 

    public static void main(String[] args) 
    {
      myArray[0] = new int[count];
      myArray[1] = new int[count];
    }
}
ЕЖ вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:30.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.