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

Классы, методы и конструкторы в 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 thoughts on “Классы, методы и конструкторы в Java”

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

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

Leave a Comment

Your email address will not be published.