2013-08-01 5 views
9

Я новичок в программировании, и я хотел бы знать, где я ошибся при создании объекта. Ниже приведен код:Как создать объект в 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

Переменная 'c' доступна в рамках метода' Sample'. Вы попытались получить доступ к нему из этой области. –

ответ

15

Там нет Sample класса в вашем коде. Тот, который вы объявили, является частным методом.

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

С текущего фрагмента кода, Вам необходимо создать экземпляр класса Testing и сделать использование метода Sample. Обратите внимание, что вашему определению класса предшествует ключевое слово класс, в данном случае 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); 
} 
} 

Но что на самом деле не имеет смысла, ваш метод Sample всегда возвращает 3.

Вы пытаетесь сделать что-то вроде этого:

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

Вы знаете, вы правы, это НЕ имеет смысла, но эй, я учусь! – user2640722

+1

Собственно, да! Это именно то, что я хочу сделать! Awesomesauce! – user2640722

1

Вы правильно создания экземпляра с new ключевым словом, но ваше имя Calss и методы ссылающейся неправильно

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

образец не является класс, его это всего лишь метод. Вы не можете создавать экземпляры. Вы только запустить его -

int sample = Sample(3); 

Если вы хотите для образца быть классом, определить его как класс.

В вашем случае метод не является статическим, поэтому вы не можете напрямую обращаться к нему из метода Static Main. Сделайте его статическим, чтобы вы могли получить к нему доступ. Или просто создайте новый экземпляр тестирования и используйте его -

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

Образец метода возвращает целое число, поэтому получите результат и используйте его в любом месте.

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

Так вы должны это делать.

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

Я сомневаюсь, что вы действительно хотите создать объект.

Из вашего фрагмента кода я понимаю, что вы хотите запустить «метод» с именем Sample, который добавляет два числа. И в JAVA вам не нужно создавать методы. Объектами являются экземпляры class. Метод - это просто поведение, которое имеет этот класс.

Для вашего требования вам не нужно явно создавать какие-либо экземпляры, как при запуске скомпилированного кода. JAVA автоматически создает экземпляр вашего класса и ищет для него способ main().

Возможно, вы просто хотите сделать следующее:

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

Примечание: Я изменил Sample к sample, как это общепринятая практика, чтобы начать имя метода с строчными и имя класса с заглавной буквы, так что Testing является правильным на этом фронте.

Смежные вопросы