Java - знакомство с классами (классы, создание объектов)
Primary tabs
Forums:
Ранее мы уже говорили "о классах вообще", но вернёмся к данной теме ещё раз теперь уже относительно Явы.
Объявления класса с методами и полями( = "переменными экземпляра") подчиняется следующей схеме:
class НекотороеИмяКласса { типПеременной имяПеременной_экземпляра1; типПеременнойВозвращаемойМетодом имяМетода1(список параметров){ // тело метода } //в списке параметро, если он не пуст также указываются типы переменных: // могут передаваться переменные разного типа типПеременнойВозвращаемойМетодом имяМетода2( типПеременной имяПермен1, типПеременной имяПермен2){ // тело метода } }
Конкретный пример:
public class MyGoodClass { // указываем имя класса public char maxnumb; // поле с максимальным номером (получим его из массива) // метод-конструктор public MyGoodClass(char[] numbarr){ // принимаем массив символов // здесь реализация конструктора (например пытаемся получить максимум из массива) } // далее обычный метод: public Method1(String str){ // получает и печатает строку с решёткой System.out.println(str + "#"); } }
Только методы или только поля или и то и то =)
В примерах выше наги классы содержали и методы и поля - но это не обязательно ,например могут быть только поля:
Пример простого класса:
public class Car { // класс "машина" public int height; // высота public int width; // ширина }
Программа - это класс
Классы особенно важны в Яве, так как даже минимальная программа (например такая) - уже представляет из себя класс, рассмотрим её здесь, но прокомментируем в другом отношении (сократив то, что нам не важно в данный момент):
// список пакетов, которые содержат описания // необходимых нам классов import java.util.Date; // для работы с датой import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; public class Test { // String[] args - возможные переменные командной строки // public static void main - метод ,который является "точкой входа" в программу public static void main(String[] args) throws ParseException { // создаём переменную типа класс DateFormat DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); // класс типа Date инициализируется с помощью // вызова метода класса formatter Date date = formatter.parse("20140427"); // 27 апреля 2014 года (воскресение) // инициаллизация класса календаря Calendar calendar = Calendar.getInstance(); calendar.setTime(date); // настраиваем календарь передав дату // узнаем является ли "переданный" день выходным: // для этого выполняем сравнение полей классов if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){ // сравнение System.out.println("Воскресение: Отдыхайте, завтра рабочий день..."); } else { System.out.println("сегодня день рабочий!)))"); } } }
Пример выше содержит (помимо нашего собственного класса-программы Test) создание и обращение к методам и полям класса определённых библиотекой Java (разработчик может использовать их "сразу" - спасибо создателям Java )) - так, например, мы использовали объекты (= экземпляры классов) типа типа DateFormat и Date.
Создание объекта (инстацирование класса)
Класс, как мы уже говорили ранее является просто схемой, которая выполнена в виде кода - этот код описывает то как должен выглядеть объект.
Объект - это "тот самый" объект по которому получил название ООП-подход.
Итак давайте посмотрим как на основе предварительного описания этот самый объект создаётся.
Выше мы привоидли пример класса Car (автомобиль). Давай те теперь создадим уже объект данного класса:
Car mycar = new Car(); // создание объекта класса "Автомобиль"
Строкой выше мы не только объявили
переменную типа "Автомобиль" ,но
и создали объект данного типа - это можно переписать
в виде:
Car mycar; // объявление переменной типа "Автомобиль" // после выполнения предыдущей строки переменная mycar // содержит значение null - это указаывает на то что она пока // не хранит ссылку на объект mycar = new Car(); // создание объекта класса "Автомобиль" // теперь переменная mycar хранит ссылку на объект, который // мы создали
Если использовать переменную mycar сразу после объявления (Car mycar;) - то есть до получения ссылки на объект - то мы получим ошибку времени компиляции (программа не скомпилируется).
Оператор NEW
Оператор new служит для создания объектов данного класса (= данного типа), его "внешний вид" в расках синтаксиса Явы подчиняется схеме:
имя_переменной = new имя_класса();
скобки после имени класса идёт потому, что подразумевается вызов функции-конструктора данного класса.
Оператор new резервирует память для объекта на всё время выполнения.
Присваивание объектных переменных
Объектные переменные - это ссылки (то есть фактически они хранят лишь адреса памяти, по котрым располагается объект), а потому присваивание типа:
Car a1 = new Car(); Car a2 = a1; // две переменные теперь ссылаются на один и тот же объект
приведёт к тому, что две переменные будут ссылаться на один и тот же объект. созданный в первой строке (Car a1 = new Car())
То есть можно сказать ,что копирования объекта при подобном присваивании не происходит, а происходит копирование ссылки.
Движемся дальше
Теперь движемся дальше по нашей программе, поговорим подробнее о методах класса
- Log in to post comments
- 6725 reads