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

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

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

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

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

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

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

Код   
public class Cat {
   
    String color;
    int weight;
    String sex;
   
   
    void myaukat(){
       
    }
   
    void walk(){
       
    }

}

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

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

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

Код   
public class Cat {
   
    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. Этот метод является точкой входа в программу. Без него Вы не запустите свое приложение. Именно в нем мы и будем создавать наши объекты.

Код   
public class Cat {
   
    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 имяМетода(Параметры метода если нужно){ действия с кодом если нужно;}.

Пример:

Код   
public class Cat {
   
    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());
    }
}

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

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

Код   
String methodForEveryObject(){
        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.

Понравилась статья? Поделиться с друзьями:
Комментарии: 5
  1. Григорий

    Почему в предпоследнем (на странице) коде public static void main объявлен внутри класса?

    1. Denys (автор)

      Здравствуйте. Потому что методы в джава должны находится только внутри класса. И я не стал (хотя можно было бы) создавать отдельного класса чтобы поместить туда мейн метод

  2. Татьяна

    Браво! Браво! Браво! Гениально! Спасибо!

    1. Denys (автор)

      Спасибо большое!

    2. Denys (автор)

      Спасибо!

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: