Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.51/106: Рейтинг темы: голосов - 106, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 10
1

Как передать переменную из одного класса в другой?

02.11.2014, 00:23. Показов 19310. Ответов 6
Метки нет (Все метки)

Доброго времени суток.
Говорю сразу, я новичек. Только начинаю свой тернистый путь. У меня возникла проблема, не могу понять как передать значение переменной из одного класса в другой. Итак идея: в классе "public class Черновик_класс" происходит вычисление площади прямоугольника (S), есть переменные a и b, то есть стороны прямоугольника. Потом значение площади прямоугольника передается в другой класс "public class Черновик_класс2" для каких либо других манипуляций (не важно для чего, хоть для раскраски этого прямоугольника). При этом, когда переменные a и b объявляются и определяются внутри класса "public class Черновик_класс", то все вроде работает нормально. Но когда значения переменным a и b осуществляется в главном классе "public class Черновик_TestDrive" передача значения "s" в класс "public class Черновик_класс2" не происходит. Не могу понять, что я делаю не так?
Код ниже:

Java
1
2
3
4
5
6
7
8
9
10
11
public class Черновик_класс {
    int a;
    int b;
    int s;
 
    public void ploshad() {
        s = a * b;
        System.out.println(s);
 
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
public class Черновик_класс2 {
    int k0;
 
    public void makeK() {
        Черновик_класс k = new Черновик_класс();
        k.ploshad();
        k0 = k.s;
        System.out.println(k0);
 
    }
}
Java
1
2
3
4
5
6
7
8
9
public class Черновик_TestDrive {
    public static void main (String [] args) {
        Черновик_класс W0= new Черновик_класс();
        W0.a=5;
        W0.b=5;
        Черновик_класс2 W= new Черновик_класс2();
        W.makeK();
    }
}
XML
1
2
3
4
5
Результат: 
run:
0
0
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 1 секунда)

Если определять переменные внутри класса "public class Черновик_класс":
Java
1
2
3
4
5
6
7
8
9
10
11
public class Черновик_класс {
    int a=5;
    int b=5;
    int s;
 
    public void ploshad() {
        s = a * b;
        System.out.println(s);
 
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
public class Черновик_класс2 {
    int k0;
 
    public void makeK() {
        Черновик_класс k = new Черновик_класс();
        k.ploshad();
        k0 = k.s;
        System.out.println(k0);
 
    }
}

Java
1
2
3
4
5
6
7
public class Черновик_TestDrive {
    public static void main (String [] args) {
 
        Черновик_класс2 W= new Черновик_класс2();
        W.makeK();
    }
}
То результат:
XML
1
2
3
4
run:
25
25
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 2 секунды)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2014, 00:23
Ответы с готовыми решениями:

Как передать переменную из одного метода в другой?
Возник вопрос. Как передать переменную из одного метода в другой? У меня есть два метода. Нужно...

Как передать входящее значение одного метода класса на возврат в другой метод того же класса?
Я самый новейший новичок. Помогите.Как передать входящее значение (количество еды) метода feed...

Как передать переменную из одного класса в другой
Мне необходимо передать текст, введенный пользователем в первой форме, во вторую. Сейчас использую...

Как передать переменную из одного класса в другой
Есть окружность, а по ней в свою очередь движется точка. Часть кода: import javax.swing.*; ...

6
942 / 686 / 229
Регистрация: 28.04.2013
Сообщений: 1,924
02.11.2014, 00:49 2
flash19800, привыкайте с самого начала давать осмысленные названия классам, методам и переменным =)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class TestApp {
    public static void main (String [] args) {
        Rectangle rectangle= new Rectangle(5, 5); // Создаем класс прямоугольника и задаем его стороны.
 
        // Теперь создадим объект класса манипуляций и передадим туда объект с прямоугольником
        ManipulationOfRectangle manipulationOfRectangle= new ManipulationOfRectangle(rectangle);
 
        // Ну и вызовем метод манипулятора
        manipulationOfRectangle.makeK();
    }
}
 
class Rectangle { //Прямоугольник
    private int a;
    private int b;
 
    public Rectangle(int a, int b) {
        this.a = a;
        this.b = b;
    }
 
    public int getAreaRectangle() {
        int area = a * b;
        return area;
    }
}
 
class ManipulationOfRectangle {
    private Rectangle rectangle;
 
    public ManipulationOfRectangle(Rectangle rectangle) { //Манипуляции с прямоугольником
        this.rectangle = rectangle;
    }
 
    public void makeK() {
        int area = rectangle.getAreaRectangle();
        System.out.println(area);
    }
}
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 10
02.11.2014, 01:38  [ТС] 3
Thanks a lot! Подскажите, а где об этом можно почитать поподробнее (в какой книге)? Я имею ввиду об взаимодействии объектов (классов), в частности о передаче данных из одного класса (объекта) в другой.
Заранее благодарен.
0
942 / 686 / 229
Регистрация: 28.04.2013
Сообщений: 1,924
02.11.2014, 02:20 4
flash19800, Литература по Java Мне книга Эккеля очень понравилась, но если это первый язык программирования у вас, то лучше с Хорстманна начинать. А Эккелем потом уже "отшлифовать" знания.

Добавлено через 1 минуту
Не смотрите что книги старые, все основные вещи там есть.

Добавлено через 5 минут
Цитата Сообщение от Mecid Посмотреть сообщение
Паттерны проектирования - эта книга в представлении не нуждается. Лучший учебник по паттернам. Все примеры на Джаве.
Как пройдете наследование полиморфизм и интерфейсы можно начало этой книги почитать, хорошо материал закрепите.
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 10
02.11.2014, 03:19  [ТС] 5
Большое спасибо.
0
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
26.02.2015, 09:26 6
А как лучше передавать переменную из Activity в Renderer?
Хочу управлять из активити тем, что будет нарисовано на GlSurfaceview
0
10 / 10 / 1
Регистрация: 26.11.2012
Сообщений: 43
26.08.2016, 13:53 7
Цитата Сообщение от Valakin Посмотреть сообщение
А как лучше передавать переменную из Activity в Renderer?
Хочу управлять из активити тем, что будет нарисовано на GlSurfaceview
Тоже с этим мучаюсь. Мне кажется что дело в том, что класс рендера наследуется от GLSurfaceView а класс, в который должно передаваться значение от AppCompatActivity. Думаю у Вас должно быть так-же. Со второго класса в первый данные могут передаваться но с первого во второй - нет. И самое интересное то, что данные все-таки передаются, но они не выходят за рамки принимающего метода класса. Вот например во втором классе такой код принимающего метода:
Java
1
2
3
4
5
public int data;
...
public void set_data(int data){
this.data=data;
}
то при проверке внутри принимающего метода, переменная примет значение с другого класса. Но если проверить эту переменную в другом методе этого-же класса, то она будет без изменений. Хотя переменная объявлена для всего класса.
Объясните знатоки, почему так выходит?

Добавлено через 12 часов 31 минуту
Разобрался. Методы были потоко-беопасные. Решил проблему через еще один класс, хранящий промежуточные данные.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2016, 13:53

Передать переменную из одного класса в другой
Есть два класса Form1 и KV,KV унаследовано от Form1.НЕобходимо передать переменную из класса KV в...

Как передать переменную из одного скрипта в другой?
Мне нужно просто в одном скрипте определить переменную, присвоить ей 0, а при выполнении другого...

Как из одного View передать переменную в другой?
Еще раз здравствуйте, программисты, подскажите пожалуйста как из одного View передать переменную в...

Как передать переменную с одного метода в другой
Есть у меня два метода, вот первый public function get_station_page($page) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.