2013-09-02 2 views
-1

Я пытаюсь понять, почему я получаю сообщение об ошибке, когда пытаюсь вызвать метод объектом, находясь в том же классе.Может ли метод вызываться объектом внутри одного класса?

Мой синтаксис выглядит правильно. Я понимаю, что локальные переменные внутри метода неинициализированы и хотели посмотреть, сможет ли компилятор выбрать это.

Моя проблема, однако, я получаю глупую ошибку от компилятора, когда я пытаюсь вызвать метод на объекте того же класса внутри класса.

class Wool { 

public static void main (String [] args) { 

int add() { 
int x; 
int a = x + 3; 
return a; 

} 

Wool w = new Wool(); 

System.out.print("something here " + w.add()); 


} // end main 

} // end class 

Там ошибка, которую я получаю от компилятора:

c Wool.java 
Wool.java:5: ';' expected 
int add() { 
    ^

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

Я просто не понимаю, почему я не могу сделать это в одном классе. И если это возможно, пожалуйста, можете ли вы просветить меня.

Помощь была бы чрезвычайно благодарна.

спасибо.

+4

Почему вы пытаетесь определить метод внутри другого метода? –

+0

Возможный дубликат [В Java, может ли объявление метода/конструктора появляться внутри другого объявления метода/конструктора?] (Http: // stackoverflow.com/questions/4735922/in-java-can-a-method-constructor-declaration-seem-inside-another-method-const) –

+0

java dosn't поддерживает определение объявления метода внутри метода. –

ответ

5

Вы не можете определить метод внутри другого. Вы должны объявить метод add вне метода main.

Изменить код

class Wool { 

    int add() { 
     int x = 0; // give a value to avoid another error 
     int a = x + 3; 
     return a; 
    } 

    public static void main (String [] args) { 
     Wool w = new Wool(); 
     System.out.print("something here " + w.add()); 
    } // end main 

} // end class 
+0

Спасибо за ваш ответ :) – user1156596

0

Вы объявляете метод внутри main(). Вы не можете сделать это.

Методы должны быть объявлены внутри классов, а не внутри других методов.

0

Потому что add() не определен как метод класса, но вы определяете его как «локальный» метод в пределах main, что недопустимо в java. Вы должны изменить его

class Woo{ 

void add(){ 

.... 
} 

public static void main(String[] args){ 

new Woo().add(); 

... 
} 


} 
0

У вас есть метод непосредственно внутри метода:

main(){ 
add() { 
} 
} 

, что незаконно в Java.

0

Поместите свой метод в тело вашего класса, но не в тело основного метода. Или лучше: оставьте Java в покое :)

+0

Мы узнаем из наших ошибок :) – user1156596

+0

Можно ли это назвать ошибкой? ^^ – Julien

+0

ха-ха, для меня да! Я понимаю, что это незаконно lol: $ – user1156596

0

Вы не можете объявить способ внутри метод.

Попробуйте это:

public static void main (String[] arts) { 
    // 
} 

int add() { 
    // 
} 
Смежные вопросы