Интерфейс vs Абстрактный класс
1) Интерфейс описывает только поведение (методы) объекта, а вот состояний (полей) у него нет (кроме public static final), в то время как у абстрактного класса они могут быть.
2) Абстрактный класс наследуется (extends), а интерфейс — реализуется (implements). Мы можем наследовать только один класс, а реализовать интерфейсов — сколько угодно. Интерфейс может наследовать (extends) другой интерфейс/интерфейсы.
Подробнее:
- интерфейсы click
- назначение интерфейсов click
- дефолтные методы в интерфейсах click
- абстрактные классы click
- частые вопросы Interface vs Abstract class click
- разница Interface vs Abstract click
Принципы ООП
Принципы объектно-ориентированного программирования:
1) Наследование - механизм, который позволяет описать новый класс на основе существующего (родительского). При этом свойства и функциональность родительского класса заимствуются новым классом.
2) Абстракция означает выделение главных, наиболее значимых характеристик предмета и наоборот — отбрасывание второстепенных, незначительных.
3) Инкапсуляция означает ограничение доступа к данным и возможностям их изменения.
4) Полиморфизм - это возможность работать с несколькими типами так, будто это один и тот же тип. При этом поведение объектов будет разным в зависимости от типа, к которому они принадлежат.
Подробнее: click
Список ArrayList
Внутри ArrayList’a находится обыкновенный массив, который и выступает хранилищем данных.
Его размер по умолчанию — [10].
При добавлении элемента в первую очередь производится проверка — достаточно ли во внутреннем массиве места и влезет ли еще один элемент. Если место есть, новый элемент добавляется следующим за последним элементом.
При вставке элемента проверяется, достаточно ли места в массиве. Если места достаточно, происходит сдвиг элементов вправо начиная с той ячейки, куда мы вставляем новый элемент.
Если выясняется, что места не хватает, внутри ArrayList’a создается новый массив размером (размерСтарогоМассива * 1.5) + 1
Подробнее: click
Внутренние классы
В Java есть 4 вида классов внутри другого класса:
- Вложенные внутренние классы – нестатические классы внутри внешнего класса.
- Вложенные статические классы – статические классы внутри внешнего класса.
- Локальные классы Java – классы внутри методов.
- Анонимные Java классы – классы, которые создаются на ходу.
Нестатические вложенные классы :clickСтатические вложенные классы :click