#java #class #object
#java #класс #объект
Вопрос:
Когда я запускаю этот код, я получаю сообщение об ошибке «Не удается найти символ» в ‘getNum2’ в методе add класса A. Как мне сделать так, чтобы один класс мог использовать объекты / методы из другого класса.
Я думаю, что это сработало бы, если бы я поместил этот метод в основной класс, но я хочу иметь возможность вызывать метод «add» для разных объектов и не иметь его жестко запрограммированным для одного набора значений.
class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
A a = new A(1);
B b = new B(2);
}
}
public class A {
private int num1;
public A(int num){
num1=num;
}
public int getNum1(){
return num1;
}
public int add (){
return getNum1() getNum2();
}
}
public class B{
private int num2;
public B (int num){
num2=num;
}
public int getNum2(){
return num2;
}
}
Комментарии:
1. вызывая эти методы. если они статические, вызывайте их через класс, если это методы экземпляра, вызывайте их через экземпляр.
2. Вам нужен объект типа
B
, чтобы иметь возможность вызыватьgetNum2()
этот экземпляр. ВызовgetNum2()
внутриA
без наличия экземпляраB
имеет нулевой смысл.
Ответ №1:
Ваш add
метод находится внутри A
. Это означает, что у вас есть доступ к A
методам, таким как getNum1
. Если вы хотите вызывать B
методы внутри add
, вам нужен доступ к экземпляру B
там. Вы можете просто передать этот экземпляр в качестве параметра:
public int add (B b){
return getNum1() b.getNum2();
}
Затем main
вы можете вызвать его следующим образом
int sum = a.add(b);
Ответ №2:
У вашего класса A нет getNum2()
метода, и у него нет экземпляра B.
Измените метод add в A на:
public int add(int toAdd) {
return num toAdd;
}
и используйте это так:
A a = new A(1);
B b = new B(2);
int result = a.add(b.getNum2());
Ответ №3:
Чтобы вызвать getNum2()
метод внутри Class A
, сначала вам нужно создать объект Class B
внутри Class A
или вам нужна ссылка на Class B
объект.
В противном случае вы можете указать getNum2()
метод в качестве static
метода.
- Создайте объект
Class B
insideClass A
.
class A{
private int num;
int getNum1(){
return num;
}
public int add(){
B b = new B();
return getNum1() b.getNum2();
}
}
- Укажите
getNum2()
как статический
class A{
private int num;
int getNum1(){
}
public int add(){
return getNum1() B.getNum2();
}
}
class B{
static int num;
public static int getNum2(){
return num;
}
}
Пожалуйста, помните, что термины, которые я использовал, очень просты, как вы можете понять. Не лучшим образом. Кроме того, я пропустил конструкторы, которые вы использовали, чтобы сделать это более понятным.
Вам лучше больше изучать основные концепции ООП Java. Кстати, удачи!
Это код, который больше связан с вашим кодом.
public class Main{
public static void main(String[] args) {
A a = new A(2);
B b = new B(3);
a.add(b);
}
}
class A{
private int num;
public A(int num){
this.num = num;
}
int getNum1(){
return num;
}
public int add(B b){
return getNum1() b.getNum2();
}
}
class B{
private int num;
public B(int num){
this.num = num;
}
public int getNum2(){
return num;
}
}
Комментарии:
1. ваш код класса B не будет компилироваться. если метод статический, то и num должно быть. Лучший подход — передать b.GetNum() в качестве параметра для добавления