Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты по java (нет 16 и 23) .doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
111.62 Кб
Скачать
  1. Классы java. Понятие объекта.

класс – абстрактная модель некого предмета.

Класс может иметь поля – набор основных характеристик предмета. Число полей не ограничено, но, как правило, их количество стараются свести к минимуму, чтобы не хранить никаких лишних данных.

Также класс может иметь методы – набор действий, которые объект может совершать. Фактически методы – это процедуры или функции. Они так же могут получать на вход какие-либо аргументы и могут возвращать или не возвращать значение.

Классы можно наследовать друг от друга. Это и есть постепенное уточнение модели. При наследовании класс-наследник автоматически получает все поля и методы родительского класса. В остальном это обычный класс, в нём также можно определять поля и методы.

Важной особенностью наследования является полиморфизм – возможность, не только уточнять модель, но и по ходу уточнения вносить в неё определённые изменения.

В Java есть возможность объявлять абстрактные классы – эти классы представляют собой не до конца реализованную модель какого-либо предмета.

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

В Java запрещено множественное наследование. Однако создатели Java предложили альтернативу множественному наследованию: интерфейсы т.е, некий облегчённый аналог класса: он не содержит полей и не содержит методов с реализацией, при этом сами методы не надо объявлять с модификатором abstract.

Когда классов становится много, их удобнее хранить в виде некоторой иерархии. В Java применяется подход, аналогичный файловой системе: вместо файлов выступают классы, вместо папок – пакеты (package). Пакеты могут быть вложены в другие пакеты, за счёт этого можно формировать иерархию хранения классов.

Методы.

Как уже говорилось, класс может содержать методы – набор действий, которые может совершать моделируемый предмет.

Объекты.

Объект представляет собой экземпляр класса – нечто вроде такой большой переменной. Каждый раз, когда мы создаём объект при помощи ключевого слова new выделяется память под каждое поле создаваемого класса, т.е. мы получаем набор переменных, объединённых в виде объекта. Чтобы позднее иметь доступ к полям объекта, надо «запомнить» ссылку на него. Для этого можно использовать переменную типа того класса на который надо сохранить указание.

  1. Основные принципы ооп

1. Абстракция - метод решения задачи, при котором у объектов выделяются их основные черты, определяющие характеристики объекта. Эти черты образуют абстрактную модель объекта – некое упрощённое представление, которого, однако, вполне достаточно для реализации операций над этим объектом в конкретной программе.

2. Инкапсуляция – сокрытие деталей реализации от пользователя. Смысл этой техники в том, что человеку, использующему уже написанный другими программистами код, не обязательно знать как именно он был написан – он просто может использовать его в своём приложении, вызывая общедоступные методы верхнего уровня – те, внутри которых и инкапсулирована основная функциональность.

3. Наследование и полиморфизм – принцип постепенной детализации модели. Оригинальная абстрактная модель проектируется достаточно простой и постепенно усложняется при помощи добавления новых параметров, при этом новая, уточнённая модель, имеет как «старые» параметры, унаследованные от более простой модели, так и «новые», добавленные на этапе уточнения.

Основным понятием является класс – абстрактная модель некого предмета.

Класс может иметь: поля – набор основных характеристик предмета, методы – набор действий, которые объект может совершать.

Классы можно наследовать друг от друга. Это и есть постепенное уточнение модели. При наследовании класс-наследник автоматически получает все поля и методы родительского класса. В остальном это обычный класс, в нём также можно определять поля и методы.

Важной особенностью наследования является полиморфизм – возможность, не только уточнять модель, но и по ходу уточнения вносить в неё определённые изменения. В ООП-языках это реализовано в виде возможности переопределять методы. В классе-наследнике можно определить такой же метод, как и в классе-родителе. «Такой же» в данном случае означает, что оба метода принимают одинаковый набор параметров и возвращает значение одного типа. Скажем, мы хотим переопределить такой метод:

  1. Методы

Класс может содержать методы – набор действий, которые может совершать моделируемый предмет.

Метод состоит из сигнатуры и тела метода. Сигнатура включает в себя модификатор доступа, тип возвращаемого значения, имя метода, список подаваемых параметров и список выбрасываемых исключений:

Тело метода представляет собой код, который будет исполнен при вызове этого метода, тело заключается в фигурные скобки.

Если метод не возвращает никакого значения, то вместо этого значения указывается void.

Чтобы вернуть значение из тела метода, используется ключевое слово return.

Теперь рассмотрим один метод, который стоит особняком в любом классе: конструктор.

Конструктор по виду представляет собой обычный метод, за исключением того, что для него не указывается тип возвращаемого значения. Конструктор вызывается каждый раз при создании объекта, фактически, это метод инициализации полей объекта. При использовании ключевого слова new происходит выделение памяти под объект, после этого вызывается конструктор, в котором могут присваиваться значения полям и уже после этого возвращается ссылка на получившийся объект.

Конструктор, как и любой другой метод, может принимать параметры. Класс может иметь несколько конструкторов, различающихся сигнатурой. По оформлению кода, конструктор является методом типа void, т.к. в нём не надо возвращать какого либо значения. Имя метода-конструктора должно совпадать с именем класса.

Статическим методом называется фрагмент программы, которому присвоено некоторое уникальное имя, и который по этому имени можно вызывать из остальных частей программы. В момент, когда происходит вызов, выполняются действия, перечисленные внутри метода (в его описании или теле).

Для того чтобы создать статический метод, перед его именем надо указать модификатор static. Если этого не сделать, то метод можно будет вызывать только в приложении к конкретному объекту данного класса (будет нестатическим).

Для обеспечения возможности вызова метода из любого класса приложения, метод стоит объявить с модификатором public.

Ограничить права доступа к методу только тем классом в котором он объявлен можно при помощи модификатор private.

Возможность вызывать метод из любого, унаследованного от данного или его потомков, класса можно с помощью модификатора protected.

Метод main обязан иметь уровень доступа public как раз потому, что к нему обращается виртуальная машина Java, не являющаяся частью какого-либо пакета.

Кроме этого, существуют другие модификаторы, которые, например, позволяют регулировать работу методов в процессе параллельных (многопоточных) вычислений.