- •1. Java. Основные синтаксические структуры языка Java. Типы данных Java. Массивы.
- •2. Концепции ооп. Классы и объекты. Ключевые свойства объектов. Инкапсуляция. Время жизни объектов. Конструкторы.
- •3. Наследование и полиморфизм. Спецификаторы доступа (private, protected, public). Иерархия классов. Перечисления. Интерфейсы и абстрактные классы.
- •4. Статические поля и методы. Порождающие методы. Блоки инициализации. Статические внутренние классы.
- •5. Внутренние, локальные и анонимные классы. Пакеты. Компиляция классов. Jar-файлы.
- •События. Виды событий. Иерархия классов событий. Команда и источник. Адаптеры. (читаем картинки слева направо, потом на новую строку)
- •Принципы создания пользовательского интерфейса. Контейнеры, панели. Основные компоненты библиотеки Swing.
- •26. Потоки выполнения. Синхронизация и сигнализирование с помощью Lock.
- •27. Дополнительные возможности синхронизации. Справедливая блокировка. Барьер, затвор, семафор.
- •Барьеры
- •28. Расширенные методы синхронизации. Блокировка чтения и записи, Exchanger. Многопоточные приложения и Swing.
- •29. Настраиваемые типы данных. Универсальные классы. Ограничения на тип.
- •30. Настраиваемые типы данных. Универсальные методы. Ограничения в использовании настраиваемых типов.
3. Наследование и полиморфизм. Спецификаторы доступа (private, protected, public). Иерархия классов. Перечисления. Интерфейсы и абстрактные классы.
Наследование - это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс - потомком, наследником или производным классом. Наследование позволяет различным типам данных совместно использовать один и тот же код, приводя к уменьшению его размера и повышению функциональности.
Полиморфизм - это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. Полиморфизм перекраивает общий код, реализующий некоторый интерфейс, так, чтобы удовлетворить конкретным особенностям отдельных типов данных.
Java предоставляет следующие модификаторы доступа (от самого разрешающего до самого ограничивающего):
public - элемент доступен из любого класса
protected - элемент доступен из подкласса или из любого класса пакета того класса, в котором находится элемент
default - элемент доступен из из любого класса пакета того класса, в котором находится элемент
private - элемент доступен лишь из того класса, в котором находится
Для ограничения множества допустимых значений для некоторого типа данных, предусмотрен тип данных – перечисление (enum).
Описание: enum Season { WINTER, SPRING, SUMMER, AUTUMN } Элементы класса enum статические.
Интерфейс - это явно указанная спецификация набора методов, которые должны быть представлены в классе, который реализует эту спецификацию. Реализация этих методов в интерфейсе отсутствует.
public interface Mylnterface
{
public void myMethod(int x,int y);
}
Абстрактный класс - базовый класс, который не предполагает создания экземпляров. Абстрактный класс может содержать абстрактные методы и свойства.
abstract class А {
abstract void callme ();
void callmetoo() {
System.out.println("Это конкретный метод.");
}
}
Иерархия классов:
Классы в Java-коде существуют в иерархии. Классы, находящиеся выше данного класса в иерархии, являются суперклассами этого класса. Этот конкретный класс является подклассом каждого класса, находящегося выше в иерархии. Подкласс наследует свойства своих суперклассов. На вершине иерархии каждого класса находится объект Object.
4. Статические поля и методы. Порождающие методы. Блоки инициализации. Статические внутренние классы.
Поля данных, объявленные в классе как static, являются общими для всех объектов класса и называются переменными класса. Если один объект изменит значение такого поля, то это изменение увидят все объекты. Для работы со статическими атрибутами используются статические методы, объявленные со спецификатором static. Такие методы являются методами класса, не привязаны ни к какому объекту. Статические поля и методы не могут обращаться к нестатическим полям и методам напрямую, так как для обращения к статическим полям и методам достаточно имени класса, в котором они определены.
public static int variable;
public double myMethod() {}
Порождающий метод — статический метод, возвращающий экземпляр класса.
NumberFormat percentFormatter= NumberFormat.getPercentInstance();
Для чего нужны такие методы:
Конструктору нельзя присвоить имя
Для создания различных экземпляров классов (фабрика)
Блок инициализации будет выполняться при создании объекта. Он располагается между фигурными скобками, например:
class MyString
{
String NameString
{ // блок инициализации(начало)
NameString = “Hello”;
}// блок инициализации(конец)
}
Существуют также блоки статической инициализации, отличающиеся от блоков инициализации тем, что перед открывающейся фигурной скобкой стоит модификатор static (статическая инициализация предусматривает обращение только к статическим элементам этого класса).
Вложенный класс - это класс, который объявлен внутри объявления другого класса. Вложенные классы делятся на статические и нестатические. Статические вложенные классы, не имеют доступа к нестатическим полям и методам обрамляющего класса, что в некотором роде аналогично статическим методам, объявленным внутри класса. Доступ к нестатическим полям и методам может осуществляться только через ссылку на экземпляр обрамляющего класса.
