-2
votes

Comment puis-je utiliser des méthodes d'une autre classe dans une classe?

Lorsque j'exécute ce code, j'obtiens l'erreur "Impossible de trouver le symbole" sur le 'getNum2' dans la méthode add de la classe A. Comment faire pour qu'une classe puisse utiliser des objets / méthodes d'une autre classe.

Je pense que cela fonctionnerait si je plaçais cette méthode dans la classe principale, mais je veux pouvoir appeler la méthode "ajouter" pour différents objets et ne pas l'avoir codée en dur pour un ensemble de valeurs.

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;
    }

}


2 commentaires

en appelant ces méthodes. si elles sont statiques, appelez-les via la classe, si ce sont des méthodes d'instance, appelez-les via une instance.


Vous avez besoin d'un objet de type B pour pouvoir appeler getNum2() sur cette instance. Appeler getNum2() intérieur de A sans avoir d'instance de B getNum2() aucun sens.


3 Réponses :


0
votes

Votre méthode add est à l'intérieur de A Cela signifie que vous avez accès à A méthodes d », comme getNum1 . Si vous voulez appeler les méthodes de B dans add , alors vous devez accéder à une instance de B cet B . Vous pouvez simplement passer cette instance en tant que paramètre:

int sum = a.add(b);

Dans votre main vous pouvez alors l'appeler comme

public int add (B b){
  return getNum1()+b.getNum2();
}


0 commentaires

0
votes

Pour appeler la méthode getNum2() intérieur de la Class A vous devez d'abord créer un objet de Class B dans la Class A ou vous avez besoin d'une référence à un objet de Class B

Sinon, vous pouvez spécifier la méthode getNum2() comme méthode static .

  1. Créez un objet de Class B dans la Class A
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. Spécifiez getNum2() comme statique
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;
    }
}

N'oubliez pas que les terminologies que j'ai utilisées sont d'une manière très simple, comme vous pouvez le comprendre. Pas de la meilleure façon. De plus, j'ai ignoré les constructeurs que vous avez utilisés pour rendre cela beaucoup plus compréhensible.

Vous feriez mieux d'étudier plus sur les concepts de base de la POO de Java. BTW, bonne chance!

C'est le code qui est le plus lié à votre code.

class A{

   private int num;

   int getNum1(){
       return num;
   }

   public int add(){
       B b = new B();
       return getNum1() + b.getNum2();
   }
}


1 commentaires

votre code de classe B ne se compilera pas. si la méthode est statique, num devrait l'être également. Une meilleure approche consiste à passer b.getNum () comme paramètre à ajouter



0
votes

Votre classe A n'a pas de méthode getNum2() , ni d'instance de B.

Modifiez la méthode d'ajout dans A en:

A a = new A(1);
B b = new B(2);
int result = a.add(b.getNum2());

et utilisez-le comme ceci:

public int add(int toAdd) {
  return num + toAdd;
}


0 commentaires