Помогите разобраться, пожалуйста.
public class Math {
private String a;
void method() {
this.a = "Hello";
}
}
Вот есть переменная "а", я в нее передаю строку "Hello". И есть
public class Physics {
void method1() {
"и здесь мне нужно использовать переменную "а"
String b = a + "world";
}
}
Как это сделать? Когда создаю объект, получаю Null.
Когда вы используете метод method1 класса Physics, то вы, как минимум, создаете через оператор new создаете экземпляр указанного класса и обращаетесь к его методу ((!!!) если конечно метод не является статическим).
Соответственно, тоже самое должно касаться и класса Math и его метода method. Или, как минимум, передать new Math() как параметр в метод (если этот экземпляр потом не нужен будет).
Ибо когда вы пишите String b = a + "world";, то это значит, что идет попытка обращения к переменной a внутри этого самого класса (Physics). А так как её нет, то и ошибка.
public class Math {
private String a;
void method() {
a = "Hello";
}
public String getA() {
return a;
}
}
public class Physics {
void method1(Math math) {
String b = math.getA() + "world";
// System.out.print(b);
}
}
метод main может при этом выглядеть так:
new Physics().method1(new Math());
или
Math math = new Math();
Physics physX = new Physics();
physX.method1(math);
Почему мне кажется, что лучше передавать объект, а не создавать его экземпляр непосредственно в методе method1 ? Потому что могут быть, например, наследники от класса Math и вы захотите вызвать их реализацию метода method, которая будет отличаться от родительского. И при этом не придется постоянно переписывать метод method1 и писать различные условия на объекты различного типа.
Для начала, необходимо провести инициализацию класса Math, затем вызвать метод method, который установит значение a.
Теперь, получается так, что извне у нас нет доступа к полю a, для этого создан метод get_a(), который и возвращает a
public class Math {
private String a;
public String get_a() {
return this.a;
}
public void method() {
this.a = "Hello";
}
}
public class Physics {
public void method1() {
Math a = new Math();
a.method();
String b = a.get_a() + "world";
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости