web-dev-qa-db-fra.com

Comment instancier un objet en Java?

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);
    }
}
10
user2640722

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);
 }
}
16
NINCOMPOOP

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.

3
MuchMore

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));
}
1
abhinav

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 );
1
Suresh Atta

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);
1
Vadim

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);
}
1
A.Mokhtari