Зачем нужны абстрактные классы в Java?
Допустим, мы делаем программу для обслуживания банковских операций и определяем в ней три класса: Person, который описывает человека, Employee, который описывает банковского служащего, и класс Client, который представляет клиента банка.
Очевидно, что классы Employee и Client будут производными от класса Person, так как оба класса имеют некоторые общие поля и методы. И так как все объекты будут представлять либо сотрудника, либо клиента банка, то напрямую мы от класса Person создавать объекты не будем.
Поэтому имеет смысл сделать его абстрактным! Пример на картинках.
Допустим, мы делаем программу для обслуживания банковских операций и определяем в ней три класса: Person, который описывает человека, Employee, который описывает банковского служащего, и класс Client, который представляет клиента банка.
Очевидно, что классы Employee и Client будут производными от класса Person, так как оба класса имеют некоторые общие поля и методы. И так как все объекты будут представлять либо сотрудника, либо клиента банка, то напрямую мы от класса Person создавать объекты не будем.
Поэтому имеет смысл сделать его абстрактным! Пример на картинках.
👍14🆒2⚡1✍1❤1🔥1
Перечисления Enum в Java.
Кроме отдельных примитивных типов данных и классов в Java есть такой тип как enum или перечисление. Перечисления представляют набор логически связанных констант. Объявление перечисления происходит с помощью оператора enum, после которого идет название перечисления. Затем идет список элементов перечисления через запятую.
Перечисление фактически представляет новый тип, поэтому мы можем определить переменную данного типа и использовать ее:
Кроме отдельных примитивных типов данных и классов в Java есть такой тип как enum или перечисление. Перечисления представляют набор логически связанных констант. Объявление перечисления происходит с помощью оператора enum, после которого идет название перечисления. Затем идет список элементов перечисления через запятую.
Перечисление фактически представляет новый тип, поэтому мы можем определить переменную данного типа и использовать ее:
👍15🔥3👨💻3👌1
Конструкторы, поля и методы Enum в Java.
Перечисления (enums), как и обычные классы, могут определять конструкторы, поля и методы.
На картинках перечисление Color определяет приватное поле code для хранения кода цвета, а с помощью метода getCode оно возвращается. Через конструктор передается для него значение.
Следует отметить, что конструктор по умолчанию приватный, то есть имеет модификатор private. Любой другой модификатор будет считаться ошибкой. Поэтому создать константы перечисления с помощью конструктора мы можем только внутри перечисления.
Также можно определять методы для отдельных констант (вторая картинка).
Перечисления (enums), как и обычные классы, могут определять конструкторы, поля и методы.
На картинках перечисление Color определяет приватное поле code для хранения кода цвета, а с помощью метода getCode оно возвращается. Через конструктор передается для него значение.
Следует отметить, что конструктор по умолчанию приватный, то есть имеет модификатор private. Любой другой модификатор будет считаться ошибкой. Поэтому создать константы перечисления с помощью конструктора мы можем только внутри перечисления.
Также можно определять методы для отдельных констант (вторая картинка).
👍8🔥5❤4✍1⚡1👌1
Внутренние и вложенные классы в Java.
Классы могут быть вложенными (nested), то есть могут быть определены внутри других классов.
Частным случаем вложенных классов являются внутренние классы (inner class). Например, имеется класс Person, внутри которого определен класс Account.
Внутренний класс ведет себя как обычный класс за тем исключением, что его объекты могут быть созданы только внутри внешнего класса.
Внутренний класс имеет доступ ко всем полям внешнего класса, в том числе закрытым с помощью модификатора private. Аналогично внешний класс имеет доступ ко всем членам внутреннего класса, в том числе к полям и методам с модификатором private.
Ссылку на объект внешнего класса из внутреннего класса можно получить с помощью выражения Внешний_класс.this, например, Person.this.
Объекты внутренних классов могут быть созданы только в том классе, в котором внутренние классы опеределены. В других внешних классах объекты внутреннего класса создать нельзя.
Пример на картинках.
Классы могут быть вложенными (nested), то есть могут быть определены внутри других классов.
Частным случаем вложенных классов являются внутренние классы (inner class). Например, имеется класс Person, внутри которого определен класс Account.
Внутренний класс ведет себя как обычный класс за тем исключением, что его объекты могут быть созданы только внутри внешнего класса.
Внутренний класс имеет доступ ко всем полям внешнего класса, в том числе закрытым с помощью модификатора private. Аналогично внешний класс имеет доступ ко всем членам внутреннего класса, в том числе к полям и методам с модификатором private.
Ссылку на объект внешнего класса из внутреннего класса можно получить с помощью выражения Внешний_класс.this, например, Person.this.
Объекты внутренних классов могут быть созданы только в том классе, в котором внутренние классы опеределены. В других внешних классах объекты внутреннего класса создать нельзя.
Пример на картинках.
👍12🔥3🆒3❤1✍1
Нас 500! ❤️
500 начинающих (и не только 😎) Java–разработчиков! Спасибо, что вы с нами!
Делитесь мыслями в комментариях, общайтесь, не стесняйтесь помогать друг другу, это важно на пути любого разработчика.
А мы с командой, в свою очередь, продолжим развивать канал и создавать авторский контент по нашей любимой Java и приносить пользу нашим начинающим разработчикам 👨💻
Обнял!
500 начинающих (и не только 😎) Java–разработчиков! Спасибо, что вы с нами!
Делитесь мыслями в комментариях, общайтесь, не стесняйтесь помогать друг другу, это важно на пути любого разработчика.
А мы с командой, в свою очередь, продолжим развивать канал и создавать авторский контент по нашей любимой Java и приносить пользу нашим начинающим разработчикам 👨💻
Обнял!
❤25👍6🔥4👨💻3🤗3❤🔥2😍1
Статические вложенные классы в Java.
Кроме внутренних классов также могут быть статические вложенные классы. Статические вложенные классы позволяют скрыть некоторую комплексную информацию внутри внешнего класса. Картинка 1.
Здесь определен вложенный класс для хранения данных о вычислении факториала. Основные действия выполняет метод getFactorial, который возвращает объект вложенного класса. И далее мы используем классы в методе main.
Кроме внутренних классов также могут быть статические вложенные классы. Статические вложенные классы позволяют скрыть некоторую комплексную информацию внутри внешнего класса. Картинка 1.
Здесь определен вложенный класс для хранения данных о вычислении факториала. Основные действия выполняет метод getFactorial, который возвращает объект вложенного класса. И далее мы используем классы в методе main.
👍9🔥4👨💻2❤1
Что такое Confluence?
Практически каждая команда, работающая над востребованным продуктом в сфере разработки ПО, использует Confluence для совместной деятельности.
Confluence — это совместное рабочее пространство для команд. Динамические страницы представляют собой площадку для творчества, сбора информации и совместной работы участников команды над любыми проектами и идеями.
Благодаря разделам в Confluence можно структурировать и организовывать работу в команде, а также предоставлять общий доступ к базе знаний организации и к информации, необходимой участникам для эффективной работы.
Confluence может работать в облаке или в собственной инфраструктуре компании.
Контент размещается на страницах — динамических документах, которые создаются на сайте Confluence. Страницы могут содержать любую информацию: от планов проектов до протоколов собраний, от руководств по поиску и устранению неисправностей до политик и многого другого.
Страницы хранятся в разделах — рабочих пространствах, предназначенных для совместной работы и упорядочения контента. Связанный контент лучше размещать в одном разделе, но можно создать столько разделов, сколько требуется команде. Например, одна маркетинговая команда может хранить всю работу в одном разделе, выделив на каждую маркетинговую кампанию по одной странице, тогда как другая может создать для каждой кампании отдельный раздел.
Систематизировать содержимое раздела помогает иерархическое дерево страниц. Благодаря этому найти нужную информацию можно быстрее и проще. Страницы можно упорядочивать любым способом, создавая вложенные страницы внутри связанных с ними разделов и страниц.
Практически каждая команда, работающая над востребованным продуктом в сфере разработки ПО, использует Confluence для совместной деятельности.
Confluence — это совместное рабочее пространство для команд. Динамические страницы представляют собой площадку для творчества, сбора информации и совместной работы участников команды над любыми проектами и идеями.
Благодаря разделам в Confluence можно структурировать и организовывать работу в команде, а также предоставлять общий доступ к базе знаний организации и к информации, необходимой участникам для эффективной работы.
Confluence может работать в облаке или в собственной инфраструктуре компании.
Контент размещается на страницах — динамических документах, которые создаются на сайте Confluence. Страницы могут содержать любую информацию: от планов проектов до протоколов собраний, от руководств по поиску и устранению неисправностей до политик и многого другого.
Страницы хранятся в разделах — рабочих пространствах, предназначенных для совместной работы и упорядочения контента. Связанный контент лучше размещать в одном разделе, но можно создать столько разделов, сколько требуется команде. Например, одна маркетинговая команда может хранить всю работу в одном разделе, выделив на каждую маркетинговую кампанию по одной странице, тогда как другая может создать для каждой кампании отдельный раздел.
Систематизировать содержимое раздела помогает иерархическое дерево страниц. Благодаря этому найти нужную информацию можно быстрее и проще. Страницы можно упорядочивать любым способом, создавая вложенные страницы внутри связанных с ними разделов и страниц.
👍10🔥3❤2🆒1
Массивы в Java. Часть 1.
Что такое массив?
Массив — это структура данных, в которой хранятся элементы одного типа. Его можно представить, как набор пронумерованных ячеек, в каждую из которых можно поместить какие-то данные (один элемент данных в одну ячейку). Доступ к конкретной ячейке осуществляется через её номер. Номер элемента в массиве также называют индексом.
В случае с Java массив однороден, то есть во всех его ячейках будут храниться элементы одного типа. Так, массив целых чисел содержит только целые числа (например, типа int), массив строк — только строки, массив из элементов созданного нами класса Dog будет содержать только объекты Dog. То есть в Java мы не можем поместить в первую ячейку массива целое число, во вторую String, а в третью — “собаку”.
Что такое массив?
Массив — это структура данных, в которой хранятся элементы одного типа. Его можно представить, как набор пронумерованных ячеек, в каждую из которых можно поместить какие-то данные (один элемент данных в одну ячейку). Доступ к конкретной ячейке осуществляется через её номер. Номер элемента в массиве также называют индексом.
В случае с Java массив однороден, то есть во всех его ячейках будут храниться элементы одного типа. Так, массив целых чисел содержит только целые числа (например, типа int), массив строк — только строки, массив из элементов созданного нами класса Dog будет содержать только объекты Dog. То есть в Java мы не можем поместить в первую ячейку массива целое число, во вторую String, а в третью — “собаку”.
👍12🔥6✍5❤1
Массивы в Java. Часть 2.
Как объявить массив?
Как и любую переменную, массив в Java нужно объявить. Сделать это можно одним из двух способов.
Они равноправны, но первый из них лучше соответствует стилю Java. Второй же — наследие языка Си (многие Си-программисты переходили на Java, и для их удобства был оставлен и альтернативный способ). В таблице приведены оба способа объявления массива в Java.
В обоих случаях dataType — тип переменных в массиве. В примерах мы объявили два массива. В одном будут храниться целые числа типа int, в другом — объекты типа Dog.
Таким образом при объявлении массива у него появляется имя и тип (тип переменных массива). arrayName — это имя массива.
Как объявить массив?
Как и любую переменную, массив в Java нужно объявить. Сделать это можно одним из двух способов.
Они равноправны, но первый из них лучше соответствует стилю Java. Второй же — наследие языка Си (многие Си-программисты переходили на Java, и для их удобства был оставлен и альтернативный способ). В таблице приведены оба способа объявления массива в Java.
В обоих случаях dataType — тип переменных в массиве. В примерах мы объявили два массива. В одном будут храниться целые числа типа int, в другом — объекты типа Dog.
Таким образом при объявлении массива у него появляется имя и тип (тип переменных массива). arrayName — это имя массива.
👍8🔥3✍2❤1🆒1
Массивы в Java. Часть 3.
Как создать массив?
Как и любой другой объект, создать массив Java, то есть зарезервировать под него место в памяти, можно с помощью оператора new. Делается это так:
new typeOfArray [length];
Где typeOfArray – это тип массива, а length – его длина (то есть, количество ячеек), выраженная в целых числах (int).
Однако здесь мы только выделили память под массив, но не связали созданный массив ни с какой объявленной ранее переменной.
Можно массив сначала объявить, а потом создать, например:
int[] myArray; // объявление массива
myArray = new int[10]; // создание, то есть, выделение памяти для массива на 10 элементов типа int
Здесь мы объявили массив целых чисел по имени myArray, а затем сообщили, что он состоит из 10 ячеек (в каждой из которых будет храниться какое-то целое число).
Однако гораздо чаще массив создают сразу после объявления с помощью такого сокращённого синтаксиса:
int[] myArray = new int[10]; // объявление и выделение памяти “в одном флаконе”
Обратите внимание: После создания массива с помощью new, в его ячейках записаны значения по умолчанию. Для численных типов (как в нашем примере) это будет 0, для boolean – false, для ссылочных типов – null.
Таким образом, после операции
int[] myArray = new int[10];
мы получаем массив из десяти целых чисел, и, пока это не изменится в ходе программы, в каждой ячейке записан 0.
Как создать массив?
Как и любой другой объект, создать массив Java, то есть зарезервировать под него место в памяти, можно с помощью оператора new. Делается это так:
new typeOfArray [length];
Где typeOfArray – это тип массива, а length – его длина (то есть, количество ячеек), выраженная в целых числах (int).
Однако здесь мы только выделили память под массив, но не связали созданный массив ни с какой объявленной ранее переменной.
Можно массив сначала объявить, а потом создать, например:
int[] myArray; // объявление массива
myArray = new int[10]; // создание, то есть, выделение памяти для массива на 10 элементов типа int
Здесь мы объявили массив целых чисел по имени myArray, а затем сообщили, что он состоит из 10 ячеек (в каждой из которых будет храниться какое-то целое число).
Однако гораздо чаще массив создают сразу после объявления с помощью такого сокращённого синтаксиса:
int[] myArray = new int[10]; // объявление и выделение памяти “в одном флаконе”
Обратите внимание: После создания массива с помощью new, в его ячейках записаны значения по умолчанию. Для численных типов (как в нашем примере) это будет 0, для boolean – false, для ссылочных типов – null.
Таким образом, после операции
int[] myArray = new int[10];
мы получаем массив из десяти целых чисел, и, пока это не изменится в ходе программы, в каждой ячейке записан 0.
👍14🔥4✍2❤1