Знания и навыки, полученные при прохождении предыдущего курса: Java 1 (Java1KnowledgeAndSkills.txt).
1. ООП
Инкапсуляция, наследование, полиморфизм. Классы и объекты. Конструкторы, параметризированные конструкторы, перезагрузка конструкторов. Ключевое слово this. Инкапсуляция (связывание и сокрытие), геттеры и сеттеры. Модификаторы доступа: public, по умолчанию, private, protected. Модификатор static, статические поля и методы. Наследование, класс Object. Переопределение методов, аннотация @Override. Ключевое слово super. Абстрактные классы и методы. Интерфейсы, реализация интерфейсов. Модификатор final (константы, запрет переопределения, запрет наследования).
2. Исключения
Концепция возникновения и обработки исключений в Java. Виды стандартных исключений (checked, unchecked), иерархия исключений. Блок try-catch-finally, вывод описания исключения. Выброс исключения (throw), выброс исключений из метода (throws). Создание собственных классов исключений.
3. Введение в коллекции
Виды контейнеров в Java: List, Map, Set. Иерархия коллекций. Классы ArrayList и LinkedList, сходство и различие. Классы HashSet, LinkedHashSet и TreeSet. Классы HashМap, LinkedНashМap и TreeMap.
4. Введение в многопоточность
Многопоточность (multithreading) в Java. Два способа создания потоков: реализация интерфейса Runnable и наследование от Thread. Приоритеты потоков. Проверка завершения, метод isAlive(), ожидание завершения потока, метод join(). Проблемы разделения доступа, синхронизация (synchronized) по методу, по объекту, по классу.
5. Работа с сетью
Основы работы в сети, сокеты и протоколы, IP адреса и порты. Библиотека java.net, классы ServerSocket() и Socket(), метод accept() серверного сокета, запись и чтение в потоки ввода-вывода. Простейший эхо-сервер и клиент.
Факультативно:
Git, быстрый старт. Курс https://geekbrains.ru/courses/66
Сборка Java проектов: быстрый взгляд на Ant, Maven и Gradle. Вебинар https://geekbrains.ru/events/758
Прочитанная дополнительная литература (одна из книг по выбору):