В предыдущем уроке мы познакомились с такими понятиями как объект и класс, а также другими важными понятиями объектно-ориентированного программирования: абстракцией, инкапсуляцией, наследованием и полиморфизмом.
Но давайте перейдем от теории к практике и научимся создавать объект в java. В этом уроке будет рассмотрено создание класса на языке java и последующее обращение к этому классу, то есть мы научимся основам работы с классами.
Создание класса в java
Создавать класс мы будем в программе Ecllipse, но также можно работать в любой другой IDE или в блокноте. В качестве примера мы будем создавать класс, который описывает характеристики и поведение кота.
Вспомним урок 3, и создадим в нашем проекте новый класс под именем Сat. Для этого в меню Ecllipse выберем File -> new -> class и, в открывшемся окне, введем имя класса – Сat (обязательно с большой буквы!). Обратите внимание, что галочка public static void main (String[] args) должна быть снята! Затем нажмем Finish (рис 5.1).
В итоге, у нас создался новый класс (рис 5.2).
Структура класса в java
Класс в java оформляется с помощью следующей конструкции:
public class Cat { }
Рассмотрим ее составляющие:
public – модификатор доступа к классу, в данном случае он нам говорит, что этот класс будет доступен не только данному классу, но и другим. В java существуют и другие модификаторы, но об этого поговорим позднее.
class – ключевое слово, говорящее о том, что это класс.
Cat – имя класса. Имена классов принято писать с заглавной буквы.
{ } – фигурные скобки, между которыми разместится тело нашего класса.
В предыдущем уроке мы упоминали, что классы в java состоят из атрибутов и методов, присвоим некоторые и нашему коту.
Атрибуты класса Сat
Атрибутами кота могут быть: имя, вес, окраска. Атрибуты это переменные, которые объявляются следующим образом:
private int weight; // вес кота private String name; // имя кота private String color; //окрас кота
private – здесь опять же указывает на права доступа. К переменной, в данном случае, можно обращаться только из ее класса, чтобы классы извне не могли ее изменить (вспомним инкапсуляцию из урока 4).
int, String – это типы данных. В данном случае вес будет задан при помощи целого числа – int, a имя и цвет при помощи символьной строки String.
После объявления каждого атрибута должна ставиться точка с запятой ;
При помощи // в коде программы оформляются комментарии, которые являются правилом хорошего тона.
Методы класса Сat
Пусть наш кот умеет есть, спать и разговаривать. Опишем это поведение с помощью методов.
//кот ест public void eat(){ System.out.print("Eating...\n"); }
public void eat() – сигнатура метода, его определение. В данном случае она нам говорит о том, что:
- метод eat() доступен для других классов – public;
- метод eat() не возвращает никаких данных – void.
eat – имя метода. Имена методов, в отличие от имен классов, принято писать с маленькой буквы. На конце каждого метода после имени всегда идут круглые скобки ( ), пустые или содержащие параметры (об этом позднее).
После сигнатуры метода идут фигурные скобки { }. В них содержится тело метода. Тело нашего метода содержит просто вывод сообщения о том, что кот кушает — "Eating...\n". За вывод текстового сообщения отвечает метод System.out.print("Eating...\n").
\n — символ перевода строки, чтобы при выводе наших сообщений все они не писались в одну строку.
Аналогично предыдущему методу опишем спящего кота:
//кот спит public void sleep(){ System.out.print("Sleeping zz-z-z-z...\n"); }
И немного иначе опишем метод – кот говорит:
//кот говорит public String speak(String words){ String phrase = words + "...mauu...\n"; return phrase; }
В отличие от предыдущих методов этот метод возвращает значение и имеет входные параметры. Давайте подробнее рассмотрим сигнатуру метода public String speak(String words):
public — метод speak() доступен для других классов;
String — тип значения, которое возвращает метод. В предыдущих случаях ключевое слово void указывало на то, что метод ничего не возвращает. В данном случае String указывает на то, что метод возвращает значение типа строка.
Что же это значит? В процессе своей работы метод выполняет определенные действия над данными. Иногда необходимо, чтобы результат этих действий был передан для дальнейшей обработки другим классам, в этом случае метод передает (возвращает) этот результат. Эти возвращаемые данные относятся к какому-либо типу. В нашем примере это тип символьной строки, String.
Возвращающие методы должны содержать в своем теле ключевое слово return, которое указывает на то, что именно возвращает данный метод. В нашем случае это переменная phrase.
speak — имя метода.
(String words) — входные параметры. Входные параметры — это какие-либо данные, которые передаются из других классов и, которые метод должен обработать. Наш метод получает в качестве входных данных строку в виде переменной words, к этой строке дописывает «...mauu...» и возвращает то, что получилось.
В итоге класс Cat выглядит следующим образом:
public class Cat { private int weight; // вес кота private String name; // имя кота private String color; //окрас кота //кот ест public void eat(){ System.out.print("Eating...\n"); } //кот спит public void sleep(){ System.out.print("Sleeping zz-z-z-z...\n"); } //кот говорит public String speak(String words){ String phrase = words + "...mauu...\n"; return phrase; } }
Обращение к классу в Java
Далее рассмотрим обращение к классу Cat. И то, как его использовать в работе.
Перейдем в класс HelloWorld, который мы создавали в уроке 3 и немного его модифицируем. Удалим строку System.out.println("Hello World"); , чтобы у нас осталось только следующее (рис 5.3).:
public class HelloWorld { /** * @param args */ public static void main(String[] args) { } }
Если вы не проходили урок 3 и не создавали класс HelloWorld, то вам его нужно создать: File -> new -> class, ввести в открывшемся окне имя класса и в этот раз обязательно установить галочку public static void main(String[] args).
public static void main(String[] args) – сигнатура метода main(). Программа состоит из нескольких классов, но только один из классов может содержать метод main(). Mетод main(), это так называемая точка входа в программу. Без этого метода мы не сможем стартовать программу. Теперь, вместо приветствия миру, этот метод будет содержать код для работы с классом Cat.
Пишем в тело метода main() (между его фигурными скобками) следующие строки:
Cat ourcat = new Cat(); ourcat.eat(); ourcat.sleep(); String say = ourcat.speak("Play with me"); System.out.println(say);
Разберем подробнее, что это значит.
Прежде чем вызывать созданные нами методы в классе Cat и заставить нашего кота есть, спать и говорить, сперва нужно создать экземпляр класса (инстанцию).
Cat ourcat = new Cat();
Данная строчка нам говорит о том, что в памяти создан экземпляр объекта Cat, а переменная ourcat типа Cat (такого же, как и наш объект) указывает на то место в памяти, где был этот объект создан.
Переменную ourcat теперь можно использовать для вызова методов класса Cat, например:
ourcat.eat(); ourcat.sleep();
При вызове этих методов в программе Eclipse удобно пользоваться комбинацией клавиш
Ctrl + пробел, после введения имени переменной и точки (рис 5.4). Программа подскажет, какие можно использовать методы для данной переменной.
Если метод возвращает какое-либо значение, например, как наш метод speak() возвращает значение типа String, то его можно вызывать следующим образом:
- объявить переменную такого же типа, что и возвращаемое значение (в нашем случае String)
- присвоить ей вызванный метод, например:
String say = ourcat.speak("Play with me");
Вспомним, что при описании нашего метода он содержал параметры speak(String words). Теперь, при вызове в качестве параметра выступила фраза "Play with me", метод speak() ее обработал и вернул "Play with me...mauu...". Именно это значение он присвоил переменной say.
Мы это можем проверить, выведя say на печать при помощи команды:
System.out.println(say);
Итак, наш класс HelloWorld теперь выглядит следующим образом:
public class HelloWorld { /** * @param args */ public static void main(String[] args) { Cat ourcat= new Cat(); ourcat.eat(); ourcat.sleep(); String say = ourcat.speak("Play with me"); System.out.println(say); } }
Теперь сохраним (Ctrl+Shift+S или ) и запустим () нашу программу. При запуске Eclipse может предложить выбрать Java Applet или Java Application. Нужно выбрать Java Application (рис 5.5).
В качестве результата внизу в консоли мы получаем следующие строки.
Eating... Sleeping zz-z-z-z... Play with me...mauu...
На этом закончим данный урок, итак, в этом уроке мы:
- Научились создавать класс в java.
- Научились объявлять атрибуты и методы класса.
- Узнали, что методы могут возвращать или не возвращать значения, иметь или не иметь входных параметров.
- Узнали что такое метод main().
- Научились создавать экземпляр класса и вызывать его методы, то есть работать с созданным объектом.
Для закрепления материала предлагаю самостоятельно создать класс Dog, где описать характеристики и поведение собаки, а потом вызвать этот класс из HelloWorld. Свои вопросы можете оставлять в комментариях.
Мария, огромное спасибо вам, вы уже засыпаны комплиментами и просто хорошими словами. Вы правда умничка, спасибо за такое доходчивое объяснение.
спасибо, приятно читать такие отзывы
Мария подскажите за что отвечает галочка public static void main, в одном случае мы снимаем её а в другом ставим?
Галочка добавляет в класс метод main, который указывает интерпретатору Java откуда надо начинать выполнение программы. Получается программа начинает выполнение с того класса, где есть метод main, а потом уже все остальные классы мы вызываем из нашего основного класса и в них main не нужен.
/кот говорит
public String speak(String words){
String phrase = words + «…mauu…\n»;
return phrase;
}
1.у метода есть входные параметры=(string words)
2.переменной phrase присваивается введеное значение в параметры метода плюс «…mauu…
3.новое значение которое переменная Phrase получила возвращается
а КУДА возвращается то ?
туда где будет запрошено.
Например здесь оно будет присвоено переменной say
String say = ourcat.speak(«Play with me»);
Если подробнее, то предствьте себе калькулятор. Вы хотите сложить при помощи него 2 числа. Метод по складыванию этих 2х чисел будет следующим
double sum(int x, int y){
double result;
result = x + y;
return result;}
Тоесть вы передаете в него числа x и y, он их складывает, получает какой-то результат и этот результат показывает на экран (возвращает).
Если обобщенно, то метод в результате обработки данных вычисляет какое-то значение, и это значение записывает в память, это и есть «возвращает значение». Потом с этим значением можно дальше работать, присвоить его переменной и с этой переменной производить дальнейшие вычисления, например
А вот касательно метода main, везде написано что программа стартует именно с того класса где объявлен этот метод,то есть имеется ввиду что есть много(несколько) классов в программе и с какого начать программа не знает и для этого есть класс с методом main.С этого класса и стартует программа,а дальше что происходит? что делает метод майн? что нужно писать в его теле?
Дальше выполняется тот код, которые написан в теле метода main (тут уже от задачи зависит), этот код может содержать вызовы других методов, расположенных в том числе и в других классах.
вот допустим есть программа которая решает какие то задачи пользователя,а разве не пользователь вызывает через интерфейс методы которые ему нужны и которые решат задачи,то тогда как можно заранее в методе майн описать что будет вызываться или выполняться?
то есть имею ввиду пользователь программы определяет какова будет последовательность вызовов а не метод майн? так ли ето?
нет
Ya uje vlubilsa v vawu metodiku))budte moey teacher 🙂
😀