Как я могу использовать методы из другого класса в классе?

#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 метода.

  1. Создайте объект Class B inside Class A .
 class A{

   private int num;

   int getNum1(){
       return num;
   }

   public int add(){
       B b = new B();
       return getNum1()   b.getNum2();
   }
}
  
  1. Укажите 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() в качестве параметра для добавления