2013-08-01 15 views
9

Sono nuovo nella programmazione e mi piacerebbe sapere dove ho sbagliato nel creare un'istanza di un oggetto. Sotto è il codice:Come istanziare un oggetto in java?

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); 
    } 
} 
+0

La variabile 'c' è accessibile nell'ambito del metodo' Sample'. Hai provato ad accedervi da questo ambito. –

risposta

15

Non c'è Sample classe nel codice. Quello che hai dichiarato è un metodo privato.

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

Con il frammento di corrente, è necessario creare un'istanza della classe Testing e fare uso del metodo Sample. Si noti che la definizione della classe è preceduta dalla parola chiave classe, in questo caso 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); 
} 
} 

Ma che in realtà non ha senso, il metodo restituisce sempre Sample3.

Stai cercando di fare qualcosa di simile:

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); 
} 
} 
+2

Sai, hai ragione, NON ha senso, ma hey, sto imparando! – user2640722

+1

In realtà sì! Questo è esattamente quello che voglio fare! Salsa stupenda! – user2640722

1

È istanziare correttamente con new parola chiave, ma il tuo nome calss e il metodo di invocazione è sbagliato

Testing myTest = new Testing(); 
    int result =myTest.Sample(1); //pass any integer value 
    System.out.println(result); 
1

campione non è una classe, è solo un metodo. Non puoi crearne delle istanze. solo Si esegue -

int sample = Sample(3); 

Se si desidera per il campione ad essere una classe, definita come una classe.

Nel tuo caso, il metodo non è statico, quindi non è possibile accedervi direttamente dal metodo Static Main. Rendilo statico in modo da poterlo accedere. O semplicemente creare una nuova istanza di test e usarlo -

Testing testing = new Testing(); 
int sample = testing.Sample(3); 
1

metodo del campione ritorna intero, in modo da ottenere il risultato e usarlo ovunque.

public static void main(String []args) 
{ 
    int myTest = Sample(4555);//input may be any int else 
    System.out.println(myTest); 
} 
1

Ecco come si dovrebbe fare questo.

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

Dubito che tu voglia effettivamente creare un oggetto.

Dal frammento di codice, capisco che si desidera eseguire un "metodo" denominato Sample che aggiunge due numeri. E in JAVA non devi istanziare metodi. Gli oggetti sono istanze di class. Un metodo è solo un comportamento che ha questa classe.

Per il vostro requisito, non è necessario creare un'istanza esplicita in quanto quando si esegue il codice compilato JAVA crea automaticamente un'istanza della classe e cerca il metodo main() da eseguire.

Probabilmente si vuole solo che segue:

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

Nota: ho cambiato Sample-sample come è generalmente accettato pratica per iniziare un nome di metodo con lettere minuscole e il nome della classe con una lettera maiuscola, quindi Testing è corretto su quel fronte.

Problemi correlati