Главная
Вход
Регистрация
Пятница, 03 Май 2024, 23:17:50 Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Общедоступные статьи [17]

Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Общедоступные статьи

0004_01 - Классы и их свойства

Базовым элементом объектно-ориентирован­ного программирования в языке Java является класс. В этой статье Вы научитесь создавать и расширять свои собственные классы, работать с экземплярами этих классов и начнете использовать мощь объектно-ориентированного подхода.

Напомним, что классы в Java не обязательно должны содержать точку входа (метод main). Единственное назначение этого метода — указать интерпретатору Java, откуда надо начинать выполнение программы. Для того, чтобы создать класс, достаточно иметь исходный файл, в котором будет присутствовать ключевое слово class, и вслед за ним — допустимый идентификатор и пара фигурных скобок для его тела.

class Point {
}

ЗАМЕЧАНИЕ
Имя исходного файла Java должно соответствовать имени хранящегося в нем класса. Регистр букв важен и в имени класса, и в имени файла.

Класс — это шаблон для создания объекта. Класс определяет структуру объекта и его методы, образующие функциональный интерфейс. В процессе выполнения Java-программы система использует определения классов для создания представителей классов. Представители являются реальными объектами. Термины «представитель», «экземпляр» и «объект» взаимозаменяемы. Ниже приведена общая форма определения класса.

class имяКласса [extends имяСуперкласса] {

    тип переменная1_объекта;
    тип переменная2_объекта;
    тип переменнаяN_объекта;

    тип имяМетода1(список_параметров) {
        тело метода;
    }

    тип имяМетода2(список_параметров) {
        тело метода;
    }
    
    тип имяМетодаN(список_параметров) {
        тело метода;
    }

}

Ключевое слово extends указывает на то, что «имяКласса» — это подкласс класса «имяСуперкласса». Во главе классовой иерархии Java стоит единственный ее встроенный класс — Object. Если вы хотите создать подкласс непосредственно этого класса, ключевое слово extends и следующее за ним имя суперкласса можно опустить — транслятор включит их в ваше определение автоматически. Примером может служить класс Point, приведенный ранее.

Свойства класса (instance variables)

Данные инкапсулируются в класс путем объявления переменных между открывающей и закрывающей фигурными скобками, выделяющими в определении класса его тело. Эти переменные объявляются точно так же, как объявлялись локальные переменные в предыдущих примерах. Единственное отличие состоит в том, что их надо объявлять вне методов, в том числе вне метода main. Ниже приведен фрагмент кода, в котором объявлен класс Point с двумя переменными типа int.

class Point {
    int х, у;
}

В качестве типа для переменных объектов можно использовать как любой из простых типов, описанных в прошлых статьях, так и классовые типы. Скоро мы добавим к приведенному выше классу метод main, чтобы его можно было запустить консольно и создать несколько объектов.

Оператор new

Оператор new вызывает конструктор указанного класса для создания объекта этого класса и возвращает ссылку на вновь созданный объект. Ниже приведен пример создания и присваивание переменной р экземпляра класса Point.

Point р = new Point();

Вы можете создать несколько ссылок на один и тот же объект. Приведенная ниже программа создает два различных объекта класса Point и в каждый из них заносит свои собственные значения. Оператор точка используется для доступа к переменным и методам объекта.

Попробуем откомпилить... Вывалилась ошибка компиляции:

говорящая о том, что класс Point, использующийся в этом классе, отсутствует.

Поправим это дело и создадим требуемый класс (такой же, как выше). Создадим его полностью пустым. Точку входа не будем прописывать, т.к. она у нас уже есть в "главном" классе. И обязательно перекомпилим исходник.

И снова попытаемся перекомпилить и запустить на исполнение главный класс:

Теперь ошибок компиляции не произошло и даже программа выполнилась. И как бы правильно. Но на самом деле - совсем не правильно, т.к. класс Point при создании его объектов был проигнорирован по очень простой причине - в нём отсутствует конструктор, т.е. метод, позволяющий создавать экземпляры класса. И на самом деле создался объект по конструктору его суперкласса, т.е. класса Object - внутреннего класса Java. А уже потом использовались расширения класса Point до свойств x и y.

Пока оставим в покое класс TwoPoints и отредактируем класс Point, прописав в нём точку входа и создание объекта самого себя:

Таким образом, перекомпилив и запустив его, мы узнали, что объекты класса можно создавать и внутри самого класса.

Итак, теперь подведём промежуточные итоги:

1. Созданный ранее класс можно использовать для создания его объектов в других классах. Главное, чтоб откомпиленный класс находился в том же каталоге, что "основной";

2. Объекты класса можно создавать внутри самого себя;

Переменные класса называются его свойствами. Так у класса Point два свойства - x и y. Как вы уже увидели, доступ к этим свойствам объекта класса извне осуществляется через оператор "точка" (.):

Point tochka = new Point(); // Мы создали объект класса Point с именем tochka
tochka.x = 215; // Свойству x объекта tochka мы установили значение 215
tochka.y = 318; // Свойству y объекта tochka мы установили значение 318
// Таким образом, мы создали точку с координатами на плоскости: tochka(215, 318)

Если мы ещё добавим в класс свойства

int z; // координата z
String color; // цвет

то тем самым расширим точку до цветной трёхмерной.

И можно теперь создавать сколько угодно таких точек с различными координатами в 3D и различных цветов.

Думаю, смысл классов и его свойств на этом шаге понятен.

А теперь задание...

1. Создайте класс (к примеру, класс Car), описывающий параметры автомобилей (например: марку, модель, год выпуска, цвет, пробег, номер...)
2. Создайте главный класс, в котором создайте массив из 8 машин
3. В цикле выведите все эти автомобили на консоль - по одной на строчку, их параметры разделите слэшем (косой чертой, дробью, "/").

И ещё одно задание:

Используя предыдущий код, выведите эти автомобили по порядку - от самой старой, до самой новой.

Категория: Общедоступные статьи | Добавил: FireSnake (18 Дек 2015)
Просмотров: 585 | Теги: создание, класс, свойства, new, Class | Рейтинг: 5.0/2
Всего комментариев: 0
avatar
Вход на сайт

Поиск

Группа VK