Je suis nouveau dans la programmation et j'aimerais savoir où je me suis trompé en instanciant un objet. Voici le code:
public class Testing{
private int Sample(int c)
{
int a = 1;
int b = 2;
c = a + b;
return c;
}
public static void main(String []args)
{
Sample myTest = new Sample();
System.out.println(c);
}
}
Il n'y a pas de classe Sample
dans votre code. Celui que vous avez déclaré est une méthode privée.
// private method which takes an int as parameter and returns another int
private int Sample(int c)
{
int a = 1;
int b = 2;
c = a + b;
return c;
}
Avec l'extrait actuel, vous devez instancier la classe Testing
et utiliser la méthode Sample
. Notez que votre définition de classe est précédée du mot clé class, dans ce cas class Testing
.
public class Testing{
private int Sample(int c)
{
int a = 1;
int b = 2;
c = a + b;
return c;
}
public static void main(String []args)
{
Testing t = new Testing(); // instantiate a Testing class object
int result = t.Sample(1); // use the instance t to invoke a method on it
System.out.println(result);
}
}
Mais cela n'a pas vraiment de sens, votre méthode Sample
renvoie toujours 3
.
Essayez-vous de faire quelque chose comme ça:
class Sample {
int a;
int b;
Sample(int a, int b) {
this.a = a;
this.b = b;
}
public int sum() {
return a + b;
}
}
public class Testing {
public static void main(String[] args) {
Sample myTest = new Sample(1, 2);
int sum = myTest.sum();
System.out.println(sum);
}
}
Je doute que vous souhaitiez réellement créer un objet.
D'après votre extrait de code, je comprends que vous souhaitez exécuter une "méthode" nommée Sample
qui ajoute deux nombres. Et dans Java vous n'avez pas à instancier les méthodes. Les objets sont des instances de class
. Une méthode est juste un comportement que cette classe a.
Pour vos besoins, vous n'avez pas besoin d'instancier explicitement quoi que ce soit comme lorsque vous exécutez le code compilé Java crée automatiquement une instance de votre classe et y recherche la méthode main()
éxécuter.
Vous voulez probablement simplement faire ce qui suit:
public class Testing{
private int sample(int a, int b) {
return a + b;
}
public static void main(String[] args) {
int c = sample(1, 2);
System.out.println(c);
}
}
Remarque: j'ai changé Sample
en sample
car il est généralement admis de démarrer un nom de méthode avec des minuscules et un nom de classe avec une lettre majuscule, donc Testing
est correct sur ce front.
Voici comment vous devriez faire cela.
public class Testing{
public int Sample(int c)
{
int a = 1;
int b = 2;
c = a + b;
return c;
}
public static void main(String []args)
{
// Creating an Instance of Testing Class
Testing myTest = new Testing();
int c =0;
// Invoking the Sample() function of the Testing Class
System.out.println(myTest.Sample(c));
}
Vous instanciez correctement avec le mot clé new
, mais le nom et la méthode d'appel de votre cals sont incorrects
Testing myTest = new Testing();
int result =myTest.Sample(1); //pass any integer value
System.out.println(result );
L'échantillon n'est pas une classe, c'est juste une méthode. Vous ne pouvez pas en créer d'instances. Vous l'exécutez seulement -
int sample = Sample(3);
Si vous souhaitez que l'échantillon soit une classe, définissez-le comme une classe.
Dans votre cas, la méthode n'est pas statique, vous ne pouvez donc pas y accéder directement depuis la méthode statique Main. Rendez-le statique pour pouvoir y accéder. Ou créez simplement une nouvelle instance de Testing et utilisez-la -
Testing testing = new Testing();
int sample = testing.Sample(3);
L'exemple de méthode renvoie un entier, alors obtenez le résultat et utilisez-le n'importe où.
public static void main(String []args)
{
int myTest = Sample(4555);//input may be any int else
System.out.println(myTest);
}