Я так понял у многих до сих пор путаница по поводу что есть что в коде: 1) class Hello { ...какой-то код...} Это класс, весь код на джаве пишется внутри классов. Основные черты - есть ключевое слово class, имя начинается с БОЛЬШОЙ буквы, в конце не ставится точка с запятой. Внутри могут быть переменные, методы, блоки кода, циклы, другие классы (внутренние классы). 2) void changeName() { ...какой-то код...} Это метод. Основные черты - перед именем есть ключевое слово void (значит, что метод ничего не возвращает, а просто делает какие-то операции, например выводит текст на экран). Если слова void нет, то ОБЯЗАТЕЛЬНО пишется тип возвращаемых данных (примитивный либо ссылочный), например int, String, boolean,...,либо имя класса, если метод возвращает этот тип данных, т.е. может быть: int changeName() { ...какой-то код...} String changeName() { ...какой-то код...} Dog changeName() { ...какой-то код...} и т.д. Имя метода начинается с маленькой буквы, после которого ставятся круглые скобки (). Скобки могут ничего не содержать, а могут содержать перечень параметров (один или несколько) которые принимает метод. Пример: String changeName( int a) { ...какой-то код...} в данном случае мы написали метод, который возвращает что-то с типом String (конкретика зависит от того, что мы накодим внутри) но на вход данный метод принимает значение с типом int. То что параметр мы назвали "а" никакого значения не имеет, с тем же успехом мы могли написать: String changeName( int vasiaPupkin) { ...какой-то код...} Теперь вызовим этот метод. Если метод вызывается изнутри того класса в котором он описан, то просто пишется: changeName (5); Если мы вызываем метод находящийся в классе B из класса А, то сначала необходимо создать объект класса B (экземпляр класса): B obiektB = new B (); // создали объект на основе класса (чертежа) B в котором был описан нужный нам метод obiektB.changeName (5); //уже в классе А обращаемся к методу созданного объекта кончились символы в посте :))))