Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java all-in-one.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2 Мб
Скачать
☆

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 (статическая инициализация предусматривает обращение только к статическим элементам этого класса).

Вложенный класс - это класс, который объявлен внутри объявления другого класса. Вложенные классы делятся на статические и нестатические. Статические вложенные классы, не имеют доступа к нестатическим полям и методам обрамляющего класса, что в некотором роде аналогично статическим методам, объявленным внутри класса. Доступ к нестатическим полям и методам может осуществляться только через ссылку на экземпляр обрамляющего класса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]