Очередная статья из цикла Основы java для новичков, которая наконец то раскроет тайну волшебных классов и методов. Для того, чтобы разобраться, что такое классы и методы нужно затронуть принципы ооп.
Объектно-ориентированное программирование (ООП) – это парадигма программирования, которая рассматривает программу, как множество объектов, которые взаимодействуют между собой. ООП “держится на трех китах” если можно это так выразить: наследование, инкапсуляция, и полиморфизм.
О них мы поговорим позже, а сейчас разберем, что такое класс в джаве.
Класс – это и есть отображение объекта. Конечно, было бы неплохо знать что такое объект. Объект – это отображение некой сущности. Понятного мало)). Окей, представьте себе некий предмет из жизни. Лучше не предмет а живое существо. Например кошка. Очень хорошее и полезное существо. Так вот, кошка и есть сущность. Как теперь отобразить эту сущность чтобы получить объект? Нужно взять некоторые свойства нашей сущности и выделить их. Давайте сделаем это. У кошки может быть такое свойство как цвет, вес, пол. Пока достаточно. Можно взять некоторые действия, которые может делать наша кошка: мяукать, ходить. С фантазией у меня по прежнему не очень)). Теперь переведем все это на язык программирования, в частности на Java.
Название объекта – название класса; свойства – поля класса и действия – это будут методы нашего класса.
Вот примерно то, что мы описали словами. Из непонятных для Вас должны быть слова String и void. String – будем воспринимать пока как отображение строковых переменных в джава (потом будет отдельная статья). С void интереснее. Это ключевое слово нужно добавлять перед именем метода, когда он ничего не возвращает. Метод может возвращать некоторое значение, а может просто выполнять некоторые вычисление и ничего не возвратить. На примере это будет понятнее.
В классе мы описали сам объект, его свойства и методы, но мы не создали конкретного кота. Для того, чтобы создавать конкретные объекты в джаве предусмотренное ключевое слово new и конструктор. По сути дела, конструктор – это тоже метод. Только он создан чтобы создавать объект. Правильная форма записи конструктора такая: ИмяКласса(){}. Это конструктор по умолчанию. Такой конструктор создаст нашего котенка, но животное будет без набора параметров. Для того, чтобы создать объект с параметрами можно применять конструктор с параметрами: ИмяКласса(параметр1, параметр2){ поле класса = параметр1; поле класса = параметр2;}. Конструкторов в классе можно создавать неограниченное количество и с разным набором параметров. Если Вы не создали конструктора, то будет использован конструктор по умолчанию: без параметров.
На примере все будет яснее. Вернемся к нашим котам:
String color;
int weight;
String sex;
Cat() {//конструктор без параметров
//сюда можно писать код, который будет выполняться при создании объекта
}
Cat(String catsColor){//конструктор с одним параметром
color = catsColor;
}
Cat(String catsColor, int catsWeight, String catsSex){//конструктор с тремя параметрами
color = catsColor;
weight = catsWeight;
sex = catsSex;
}
void myaukat(){
}
void walk(){
}
}
Как видим, теперь мы можем создавать наших котов в трех разных вариациях.
Для того, чтобы создать новый объект есть такой синтаксис: Объект имяОбъекта = new Конструктор();.
Давайте попробуем создать несколько котов. Для этого добавим в свой класс метод main. Этот метод является точкой входа в программу. Без него Вы не запустите свое приложение. Именно в нем мы и будем создавать наши объекты.
String color;
int weight;
String sex;
Cat() {//конструктор без параметров
//сюда можно писать код, который будет выполняться при создании объекта
}
Cat(String catsColor){//конструктор с одним параметром
color = catsColor;
}
Cat(String catsColor, int catsWeight, String catsSex){//конструктор с тремя параметрами
color = catsColor;
weight = catsWeight;
sex = catsSex;
}
void myaukat(){
}
void walk(){
}
public static void main(String[] args){
Cat cat1 = new Cat();//кот без параметров
Cat cat2 = new Cat("black");//черный кот
Cat cat3 = new Cat("white", 5, "man");//кот с полным набором параметров
}
}
Но какой толк от такого кода, если наши коты ничего не будут делать? Для действий у нас есть методы. Метод в джава – это синоним функции или процедуры.
Метод может возвращать значение, не возвращать ничего.
Синтаксис метода, который возвращает значение: типЗначения имяМетода(Параметры метода если нужно){ действия с кодом если нужно; return значениеКотороеСоответствуетТипу}.
Синтаксис метода, который не возвращает значение: void имяМетода(Параметры метода если нужно){ действия с кодом если нужно;}.
Пример:
String color;
int weight;
String sex;
Cat() {//конструктор без параметров
//сюда можно писать код, который будет выполняться при создании объекта
}
Cat(String catsColor){//конструктор с одним параметром
color = catsColor;
}
Cat(String catsColor, int catsWeight, String catsSex){//конструктор с тремя параметрами
color = catsColor;
weight = catsWeight;
sex = catsSex;
}
void myaukat(int count){
for (int i = 0; i < count; i++) {
System.out.println("Meaou!");
}
}
String walk(){
return "I'm walking";
}
public static void main(String[] args){
Cat cat1 = new Cat();//кот без параметров
Cat cat2 = new Cat("black");//черный кот
Cat cat3 = new Cat("white", 5, "man");//кот с полным набором параметров
cat1.myaukat(4);
System.out.println(cat1.walk());
}
}
Результат выполнения:
Как видим, в коде идет вызов метода с параметром который ничего не возвращает и метода без параметра, который возвращает строку. Возвращаемое значение можно вывести в консоль (как это делаем мы) можно использовать в другом методе или по другим назначениям. Для вызова метода, необходимо сначала создать и инициализировать объект и через точку вызвать нужный нам метод. Причем, для каждого объекта будет свой вызов метода:
return color + " cat is walking";
}
public static void main(String[] args){
Cat cat1 = new Cat();//кот без параметров
Cat cat2 = new Cat("black");//черный кот
Cat cat3 = new Cat("white", 5, "man");//кот с полным набором параметров
System.out.println(cat1.methodForEveryObject());
System.out.println(cat2.methodForEveryObject());
System.out.println(cat3.methodForEveryObject());
}
Результат выполнения:
null cat is walking
black cat is walking
white cat is walking
Обратите внимание, на вывод метода для объекта cat1. Так, как у него не проинициализирован параметр цвет, то выводится значение по умолчанию. Для объектов это null. Значение по умолчанию для примитивных типов:
- int – 0;
- double – 0.0;
- boolean – false;
- float – 0.0;
- char – (не выведет ничего).
На этом, думаю, мы и закончим изучение классов и методов в java. В следующий раз мы раскроем тайну модификаторов и наконец то узнаем, что это за слово public перед словом class и методом main.
Почему в предпоследнем (на странице) коде public static void main объявлен внутри класса?
Здравствуйте. Потому что методы в джава должны находится только внутри класса. И я не стал (хотя можно было бы) создавать отдельного класса чтобы поместить туда мейн метод
Браво! Браво! Браво! Гениально! Спасибо!
Спасибо большое!
Спасибо!