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; } }
3 Réponses :
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(); }
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
.
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; } }
getNum2()
comme statiqueclass 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(); } }
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
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; }
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 appelergetNum2()
sur cette instance. AppelergetNum2()
intérieur deA
sans avoir d'instance deB
getNum2()
aucun sens.