Помогите разобраться, пожалуйста.
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";
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Например, Map<String*, Integer> map = new TreeMap<String, Integer>();, там где * можно поставить < <String,String>, Integer > например?
Есть класс Java, который распаковывает архивы в каталогеЕсли архив поврежден, то открывается окно winrar с содержимым "Архив поврежден или имеет...