классы и методы

Классы, методы и конструкторы в Java

Очередная статья из цикла Основы java для новичков, которая наконец то раскроет тайну волшебных классов и методов. Для того, чтобы разобраться, что такое классы и методы нужно затронуть принципы ооп.

Объектно-ориентированное программирование (ООП) — это парадигма программирования, которая рассматривает программу, как множество объектов, которые взаимодействуют между собой. ООП «держится на трех китах» если можно это так выразить: наследование, инкапсуляция, и полиморфизм.

О них мы поговорим позже, а сейчас разберем, что такое класс в джаве. 

Класс — это и есть отображение объекта. Конечно, было бы неплохо знать что такое объект. Объект — это отображение некой сущности. Понятного мало)). Окей, представьте себе некий предмет из жизни. Лучше не предмет а живое существо. Например кошка. Очень хорошее и полезное существо. Так вот, кошка и есть сущность. Как теперь отобразить эту сущность чтобы получить объект? Нужно взять некоторые свойства нашей сущности и выделить их. Давайте сделаем это. У кошки может быть такое свойство как цвет, вес, пол. Пока достаточно. Можно взять некоторые действия, которые может делать наша кошка: мяукать, ходить. С фантазией у меня по прежнему не очень)). Теперь переведем все это на язык программирования, в частности на Java.

Название объекта — название класса; свойства — поля класса и действия — это будут методы нашего класса.

Код    
  1. public class Cat {
  2.    
  3.     String color;
  4.     int weight;
  5.     String sex;
  6.    
  7.    
  8.     void myaukat(){
  9.        
  10.     }
  11.    
  12.     void walk(){
  13.        
  14.     }
  15.  
  16. }

Вот примерно то, что мы описали словами. Из непонятных для Вас должны быть слова String и void. String — будем воспринимать пока как отображение строковых переменных в джава (потом будет отдельная статья). С void интереснее. Это ключевое слово нужно добавлять перед именем метода, когда он ничего не возвращает. Метод может возвращать некоторое значение, а может просто выполнять некоторые вычисление и ничего не возвратить. На примере это будет понятнее.

В классе мы описали сам объект, его свойства и методы, но мы не создали конкретного кота. Для того, чтобы создавать конкретные объекты в джаве предусмотренное ключевое слово new и конструктор. По сути дела, конструктор — это тоже метод. Только он создан чтобы создавать объект. Правильная форма записи конструктора такая: ИмяКласса(){}. Это конструктор по умолчанию. Такой конструктор создаст нашего котенка, но животное будет без набора параметров. Для того, чтобы создать объект с параметрами можно применять конструктор с параметрами: ИмяКласса(параметр1, параметр2){ поле класса = параметр1; поле класса = параметр2;}. Конструкторов в классе можно создавать неограниченное количество и с разным набором параметров. Если Вы не создали конструктора, то будет использован конструктор по умолчанию: без параметров.

На примере все будет яснее. Вернемся к нашим котам:

Код    
  1. public class Cat {
  2.    
  3.     String color;
  4.     int weight;
  5.     String sex;
  6.    
  7.      Cat() {//конструктор без параметров
  8.         //сюда можно писать код, который будет выполняться при создании объекта
  9.     }
  10.      
  11.      Cat(String catsColor){//конструктор с одним параметром
  12.          color = catsColor;
  13.      }
  14.      
  15.      Cat(String catsColor, int catsWeight, String catsSex){//конструктор с тремя параметрами
  16.          color = catsColor;
  17.          weight = catsWeight;
  18.          sex = catsSex;
  19.      }
  20.    
  21.     void myaukat(){
  22.        
  23.     }
  24.    
  25.     void walk(){
  26.        
  27.     }
  28.  
  29. }

Как видим, теперь мы можем создавать наших котов в трех разных вариациях.

Для того, чтобы создать новый объект есть такой синтаксис: Объект имяОбъекта = new Конструктор();.

Давайте попробуем создать несколько котов. Для этого добавим в свой класс метод main. Этот метод является точкой входа в программу. Без него Вы не запустите свое приложение. Именно в нем мы и будем создавать наши объекты.

Код    
  1. public class Cat {
  2.    
  3.     String color;
  4.     int weight;
  5.     String sex;
  6.    
  7.      Cat() {//конструктор без параметров
  8.         //сюда можно писать код, который будет выполняться при создании объекта
  9.     }
  10.      
  11.      Cat(String catsColor){//конструктор с одним параметром
  12.          color = catsColor;
  13.      }
  14.      
  15.      Cat(String catsColor, int catsWeight, String catsSex){//конструктор с тремя параметрами
  16.          color = catsColor;
  17.          weight = catsWeight;
  18.          sex = catsSex;
  19.      }
  20.    
  21.     void myaukat(){
  22.        
  23.     }
  24.    
  25.     void walk(){
  26.        
  27.     }
  28.  
  29.     public static void main(String[] args){
  30.         Cat cat1 = new Cat();//кот без параметров
  31.         Cat cat2 = new Cat("black");//черный кот
  32.         Cat cat3 = new Cat("white", 5, "man");//кот с полным набором параметров
  33.     }
  34. }

Но какой толк от такого кода, если наши коты ничего не будут делать? Для действий у нас есть методы. Метод в джава — это синоним функции или процедуры.

Метод может возвращать значение, не возвращать ничего.

Синтаксис метода, который возвращает значение: типЗначения имяМетода(Параметры метода если нужно){ действия с кодом если нужно; return значениеКотороеСоответствуетТипу}.

Синтаксис метода, который не возвращает значение: void имяМетода(Параметры метода если нужно){ действия с кодом если нужно;}.

Пример:

Код    
  1. public class Cat {
  2.    
  3.     String color;
  4.     int weight;
  5.     String sex;
  6.    
  7.      Cat() {//конструктор без параметров
  8.         //сюда можно писать код, который будет выполняться при создании объекта
  9.     }
  10.      
  11.      Cat(String catsColor){//конструктор с одним параметром
  12.          color = catsColor;
  13.      }
  14.      
  15.      Cat(String catsColor, int catsWeight, String catsSex){//конструктор с тремя параметрами
  16.          color = catsColor;
  17.          weight = catsWeight;
  18.          sex = catsSex;
  19.      }
  20.    
  21.     void myaukat(int count){
  22.         for (int i = 0; i < count; i++) {
  23.             System.out.println("Meaou!");
  24.         }
  25.     }
  26.    
  27.     String walk(){
  28.         return "I'm walking";
  29.     }
  30.  
  31.     public static void main(String[] args){
  32.         Cat cat1 = new Cat();//кот без параметров
  33.         Cat cat2 = new Cat("black");//черный кот
  34.         Cat cat3 = new Cat("white", 5, "man");//кот с полным набором параметров
  35.        
  36.         cat1.myaukat(4);
  37.         System.out.println(cat1.walk());
  38.     }
  39. }

Результат выполнения:классы и методы

Как видим, в коде идет вызов метода с параметром который ничего не возвращает и метода без параметра, который возвращает строку. Возвращаемое значение можно вывести в консоль (как это делаем мы) можно использовать в другом методе или по другим назначениям. Для вызова метода, необходимо сначала создать и инициализировать объект и через точку вызвать нужный нам метод. Причем, для каждого объекта будет свой вызов метода: 

Код    
  1. String methodForEveryObject(){
  2.         return color + " cat is walking";
  3.     }
  4.  
  5.     public static void main(String[] args){
  6.         Cat cat1 = new Cat();//кот без параметров
  7.         Cat cat2 = new Cat("black");//черный кот
  8.         Cat cat3 = new Cat("white", 5, "man");//кот с полным набором параметров
  9.        
  10.         System.out.println(cat1.methodForEveryObject());
  11.         System.out.println(cat2.methodForEveryObject());
  12.         System.out.println(cat3.methodForEveryObject());
  13.     }

Результат выполнения:

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.

Добавить комментарий