Приведем простейший пример, на котором видно, как вообще осуществляется работа с классами и объектами в 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()); //вывод объема } }
Результат выполнения программы будет следующим:
Каждое из чисел — результат выполнения инструкций System.out.println(); В зависимости от текущего значения переменной vol (а в последнем случае мы сразу подставили возвращаемое значение метода SecondBox.volume()), команда вывода печатает разные значения.
Продолжение: Шаг 5. Объектно-ориентированное программирование «на пальцах»
Начало: Шаг 3. Подробное рассмотрение программы FirstProgram