Шаг 4. Пример работы с классами и объектами

Приведем простейший пример, на котором видно, как вообще осуществляется работа с классами и объектами в Java. Создалим программу BoxDemo. Она будет включать в себя два класса. В первом классе Box мы определим структуру коробки, определим поля этого класса и его методы. А во втором классе BoxDemo мы создадим несколько объектов класса Box и попытаемся увидеть, как с ними можно работать.


//Файл BoxDemo.java
package boxdemo;

//Создаем новый класс Box, который будет описывать коробку
class Box {
    //Поля класса
    //тип double - это тип, который позволяет хранить дробные числа
    double width; //ширина (переменная width будет хранить значение ширины)
    double height; //высота
    double depth; //глубина
    
    // Методы класса
    // Конструктор - это метод для создания объекта класса
    // Конструктор не имеет возвращаемого типа данных (даже void не пишется),
    // а имя конструктора совпадает с именем класса.
    // Конструкторов может быть несколько. Мы пока сделаем два. Один будет получать
    // 1 параметр. Второй будет получать 3 параметра. Первый будет делать куб,
    // а второй - коробку произвольных пропорций. При вызове, если мы вызовем
    // конструктор и передадим ему 1 параметр, то автоматически выберется первый конструктор, 
    // а если параметров будет 3 - то вызовется второй конструктор
    
    //Первый коструктор
    Box(double size) {
        width = size;
        height = size;
        depth = size;
    }
    //Второй конструктор
    Box(double w, double h, double d) {
        width = w;
        height = h;
        depth = d;
    }
    //В конструкторах мы присваиваем значениям полей класса значений параметров,
    //которые передаем им при вызове
    
    //Ну и определим еще 1 метод, который подсчитывает объем коробки.
    //Он будет возвращать такой же дробный тип double, поскольку 
    //перемножает 3 дробных числа. Параметры мы ему не передаем (), он сам будет брать
    //значения полей.
    double volume() {
        double v;
        v= width * height * depth;
        return v;
    }
}

//А вот наш главный класс, с него запускается программа
public class BoxDemo {
    //C этого метода    
    public static void main(String[] args) {
        //Создадим переменную для объема
        double vol=0;
        //Создадим первую коробку, используя первый тип конструктора с 1 параметром        
        Box FirstBox = new Box(4); 
        //Объект с именем FirstBox класса Box создается выделением памяти (new) и
        //вызовом конструктора Box(4), где 4 - это параметр size.
        //Вызов метода сопровождается указанием объекта, 
        //и отделяется от его имени оператором точка "."
        vol = FirstBox.volume(); // тут мы вызвали для объекта FirstBox 
        //метод, который ему достался от порождающего его класса Box;
        //Выведем объем на экран
        System.out.println(vol);//объем равен 64
        //а теперь, изменим один из паказателей height нашего куба
        FirstBox.height=5;
        vol = FirstBox.volume(); // снова считаем объем, только уже 4*5*4=80
        System.out.println(vol); //вывод объема 80
        //Создадим новую коробку вторым конструктором
        Box SecondBox = new Box(2, 4, 6); //2 4 6 то подставится вместо w h d
        vol = SecondBox.volume(); //объем второй коробки
        System.out.println(vol); //вывод объема 48
        //Можно не пользоваться переменной vol, написать так
        System.out.println(SecondBox.volume()); //вывод объема        
    }
}

Результат выполнения программы будет следующим:
вывод программы BoxDemo
Каждое из чисел — результат выполнения инструкций System.out.println(); В зависимости от текущего значения переменной vol (а в последнем случае мы сразу подставили возвращаемое значение метода SecondBox.volume()), команда вывода печатает разные значения.

Продолжение: Шаг 5. Объектно-ориентированное программирование «на пальцах»
Начало: Шаг 3. Подробное рассмотрение программы FirstProgram

Комментарии для сайта Cackle