Файл: Задача Раскрыть содержание знаний и понятий объектноориентированного программирования.docx
Добавлен: 10.01.2024
Просмотров: 96
Скачиваний: 1
Классы и объекты
Java - это объектно-ориентированный язык, поэтому код в ваших программах будет состоять из объектов и классов.Классы
Java позволяет создавать классы, которые представляют объекты из реального мира. Например, можно создать класс Car (автомобиль) или Animal (животное) и задать им различные свойства. Для класса Car логично создать такие свойства как двери, колёса, лобовое стекло и т.д. Имея класс Car, можно создать новые классы Легковушки, Грузовики, Автобусы, которые будут иметь все свойства класса Car, а также свои собственные свойства. У класса Animal соответственно можно задать свойства Лапы, Хвост, а затем создать наш любимый класс Cat, у которого будет ещё дополнительное свойство Усы. Иными словами, классы могут наследовать свойства от других классов. Родительский класс называется суперклассом. Внутри классов могут быть объявлены поля и методы.Для объявления класса служит ключевое слово class. Вспомним стандартную строчку кода из Android-проекта:public class MainActivity extends Activity {// код внутри класса}Упрощённая общая форма для класса может иметь следующий вид:class ИмяКласса {тип переменная_экземпляра1;тип имяМетода(список параметров){// тело метода}}В Java принято начинать имена класса с большой буквы. В классе могут быть несколько переменных и методов. Переменные, определённые внутри класса (не метода), называются переменными экземпляра или полями (fields). Код пишется внутри класса. Методы и переменные внутри класса являются членами класса.
Объекты
Новый объект (или экземпляр) создаётся из существующего класса при помощи ключевого слова new:Cat barsik = new Cat(); // создали кота из класса CatВ большинстве случаев вы будете использовать такой способ. Пусть вас не удивляет, что приходится дважды использовать слово Cat, оно имеет разный смысл.Слева от оператора присваивания = определяется имя переменной и его тип Cat. В правой части выражения происходит выделение памяти для нового экземпляра класса Cat и инициализируется(создается) экземпляр. Оператор присваивания присваивает переменной ссылку на только что созданный объект. Имена объектов не нужно начинать с большой буквы, как у класса. Так вы будете различать, где класс, а где экземпляр класса. Если имя экземпляра класса состоит из нескольких слов, то используется верблюжья нотация, когда все первые буквы слов, кроме первой, пишутся с большой - superBlackCat.Если вы помните, при объявлении примитивных типов мы указывали нужный тип в самом начале.int catAge;Поэтому код Cat barsik также определяет его тип. Он не всегда может совпадать с именем класса.Pet barsik = new Cat();В этом примере используется тип класса домашних любимцев Pet, а обращаемся к классу котов Cat.Теперь подробнее.Простой пример создания класса Box (коробка для кота):class Box {int width; // ширина коробкиint height; // высота коробкиint depth; // глубина коробки}При таком варианте Java автоматически присвоит переменным значения по умолчанию. Например, для int это будет значение 0. Но не всегда значения по умолчанию подойдут в вашем классе. Если вы создали переменную для описания количества лап у кота, то логично сразу присвоить значение 4. Поэтому считается хорошей практикой сразу присваивать нужные значения полям класса, не полагаясь на систему.
Вам нужно создать отдельный файл Box.java, в который следует вставить код, описанный выше. О том, как создавать новый файл для класса я не буду здесь расписывать.
Сам класс - это просто шаблон, заготовка. Чтобы ваше приложение могло использовать данный шаблон, нужно создать на его основе объект при помощи ключевого слова new:
Box catBox = new Box; // создали реальный объект с именем catBox на основе шаблона Box
Красивая получилась коробочка.
Объект catBox, объявленный в коде вашей программы, сразу займёт часть памяти на устройстве. При этом объект будет содержать собственные копии переменных экземпляра width, height, depth. Для доступа к этим переменным используется точка (.). Если мы хотим присвоить значение переменной width, то после создания объекта класса можете написать код:
catBox.width = 400; // ширина коробки для кота 400 миллиметров
Если мы хотим вычислить объём коробки, то нужно перемножить все значения размеров коробки:
Box catBox = new Box();
catBox.width = 400;
catBox.height = 200;
catBox.depth = 250;
int volume = catBox.width * catBox.height * catBox.depth;
mInfoTextView.setText("Объём коробки: " + volume);
Каждый объект содержит собственные копии переменных экземпляра. Вы можете создать несколько объектов на основе класса Box и присваивать разные значения для размеров коробки. При этом изменения переменных экземпляра одного объекта никак не влияют на переменные экземпляра другого объекта. Давайте объявим два объекта класса Box:
Box bigBox = new Box(); // большая коробка
Box smallBox = new Box(); // маленькая коробка
int volume;
// присвоим значения переменным для большой коробки
bigBox.width = 400;
bigBox.height = 200;
bigBox.depth = 250;
// присвоим значения переменным для маленькой коробки
smallBox.width = 200;
smallBox.height = 100;
smallBox.depth = 150;
// вычисляем объём первой коробки
volume = bigBox.width * bigBox.height * bigBox.depth;
mInfoTextView.setText("Объём большой коробки: " + volume + "\n");
// вычисляем объём маленькой коробки
volume = smallBox.width * smallBox.height * smallBox.depth;
mInfoTextView.append("Объём маленькой коробки: " + volume);
Когда мы используем конструкцию типа Box bigBox = new Box();, то в одной строке выполняем сразу два действия - объявляем переменную типа класса и резервируем память под объект. Можно разбить конструкцию на отдельные части:
Box bigBox; // объявляем ссылку на объект
bigBox = new Box(); // резервируем память для объекта Box
Обычно такую конструкцию из двух строк кода не используют на практике, если нет особых причин. Когда мы используем ключевое слово
new и указываем имя класса, то после имени ставим круглые скобки, которые указывают на конструктор класса. О них поговорим позже.