Java/Основные понятия: различия между версиями

Содержимое удалено Содержимое добавлено
→‎От абстракции к программированию: добавил строку "public Box inner;" в класс Room
мНет описания правки
Строка 8:
Класс есть ключевое понятие в [[объектно-ориентированное программирование|объектно-ориентированном программировании]], под которое и заточена Java. Класс описывает содержание и поведение некой совокупности данных и действий над этими данными. Объявление класса производится с помощью ключевого слова ''class''. Пример: class < имя_класса > {// содержимое класса}.
 
К примеру, если мы моделируем прямоугольную комнату классом <var>Комната</var>, то данными могут быть длина, ширина и высота, двери, электророзеткиэлектрические розетки, мебель. Заметим, что на уровне класса мы ещё не знаем, о которой комнате идет речь, но точно знаем, что это не ящик (который тоже имеет длину, высоту и ширину), а именно комната. Действиями могут быть вычисление объема, помещение и изъятие мебели, открытие дверей. Чтобы вычислить объем комнаты или наклеить обои, нам не нужны ее размеры, о своих размерах каждая конкретная комната знает сама.
 
=== Наследование ===
Строка 33:
Класс комната и ящик поддерживают интерфейс Capacity и могут выглядеть так:
 
<source lang="java" line="1">
class Room implements Capacity {
public double width;
public double height;
public double length;
public Box inner; //ссылка
 
@Override
public double getCapacity() {
return width * height * length;
Строка 50 ⟶ 51 :
public double length;
 
@Override
public double getCapacity() {
return width * height * length;
Строка 58 ⟶ 60 :
Не будем пока обращать внимания на слово '''public''', об этом мы поговорим позже в разделе [[Java/Видимость|видимость]]. А обратим внимание на то, что оба класса как две капли воды похожи друг на друга. Давайте вынесем одинаковую функциональность в общий класс-предок:
 
<source lang="java" line="1">
class Base implements Capacity {
public double width;
Строка 64 ⟶ 66 :
public double length;
 
@Override
public double getCapacity() {
return width * height * length;
Строка 78 ⟶ 81 :
Допустим, что в любой комнате обязательно находится один объект определенного объёма и объем комнаты не включает объема данного объекта. Тогда класс Room будет выглядеть так:
 
<source lang="java" line="1">
class Room extends Base {
public Capacity inner;
 
@Override
public double getCapacity() {
return super.getCapacity() - inner.getCapacity();
Строка 92 ⟶ 96 :
Ну вот и пришло время проверить все то, что мы написали. Для проверки создадим еще один класс.
 
<source lang="java" line="1">
class Test {
public static void main(String[] args) {