Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_OOP2012.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
584.19 Кб
Скачать

Структура класса

На выше приведенном примере класса рассмотрим основные элементы структуры класса Java.

Объявление класса начинается со строки , в которой присутствует ключевое слово class и название класса. Java- регистрозависимый язык , поэтому классы с названиями Human и HuMan – это разные классы. Тело класса , все его структурные части заключены между фигурными скобками {}(строки 1.9 ,1.54). Обычно над объявлениями класса размещается информация о необходимых импортах и пакетах(информацию о пакетах см. ниже). В теле класса возможны следующие структурные элементы :

атрибуты класса(их иногда называют полями или свойствами класса). Их полным набором будет обладать любой экземпляр данного класса. В случае Human , каждый экземпляр этого класса будет иметь следующие свойства - фамилию , возраст , адрес проживания, день рождения , идентификационный код. Пример атрибутов- строки 1.10-1.14 Свойства класса должны отражать реальные свойства объектов моделируемой системы. Объявление атрибута класса ничем не отличается от обычной переменной- первоначально указывается модификатор доступа(в случае отсутствия его явного задания уровень доступа к свойству – дефаултовый ( па-кетный) ). Далее указывается тип данных , которые будут хранится в переменной .Затем указывается идентификатор или другими словами имя атрибута класса. В Java идентификаторы могут содержать буквы и цифрры(подчеркивание и $ разрешены ) , длина не ограничена. Имена атрибутов должны отражать их связь со свойствами реальных объектов. Пример :

строка 1.11 - private int age ; , где private- модификатор доступа, int- тип данных, которые будут храниться в атрибуте с именем age.

конструкторы класса - это структурный элемент , отвечающий за правильность процедуры создания экземпляров класса . Обычно в конструкторах производят корректную инициализацию свойств создаваемых экземпляров . Количество конструкторов в классе не ограничено. Конструктор без параметров называют конструктором по умолчанию. Он создается автоматически , даже если не задан явно программистом, но только в случае , если в классе программист не создал ни одного конструктора. Если у нас есть хотя бы один конструктор , и есть необходимость в конструкторе без параметров , то мы должны его задать в коде самостоятельно. Особенности задания – конструктор всегда называется точно так же как сам класс. Использование при описании класса нескольких конструкторов с различными параметрами называется перегрузкой конструкторов. Пример – строка 1.21, 1.29, 1.16. При создании экземпляра класса (с использованием оператора new строка 1.40, 1.41) мы можем использовать только те конструкторы , параметры которых соответствуют , описанным в классе. Пример - я не могу ,например, создать экземпляр класса Human командой = Human h123=new Human(23,45,”Сидоров”) =, т. к. у нас в описании класса нет ни одного конструктора с данной последовательностью и типом параметров – int , int , String.

Инициализаторы или блоки статической инициализации – их пока не рассматриваем.

Методы класса – в этой части сосредоточено поведение класса , то что каждый экземпляр класса умеет делать для других (внешний интерфейс) и то , что он делает для поддержания своей внутренней целостности и непротиворечивости(внутренний интерфейс). В рассматриваемом классе Human описаны следующие методы- getAdress() -1.32, setAdress(String adress)-1.35 , main(String[] args) -1.39, toString() – 1.48 Они все относятся к внешнему интерфейсу класса т.к. имеют модификатор доступа public.

Остановимься чуть подробнее на синтаксисе объявления методов. Введем понятие сигнатуры метода- это совокупность имени метода, типов и количества параметров, а так же порядка параметров в описании метода. Понятие сигнатуры важно по причине того , что в классе не могут быть два метода с одинаковой сигнатурой. Это контролирует компилятор. Пример – компилятор не разрешит создание в одном классе методов one(String str, int var1) и one(String qwe, int sde) (докажите , что сигнатуры этих методов одинаковы), но разрешит создание методов one(String str1, int var1, Date d1) , one(String str1,int var1) и one(Date d1,String str1,int var1) (докажите что сигнатуры методов различны для этих 3 методов). Наличие в классе нескольких методов с одинаковыми именами называется перегрузкой методов. Отдельная группа методов – это так называемые set-еры и get-еры. Это специлизированные методы , которые предназначены для считывания (get-еры) и модификации (set-еры) атрибутов класса. При этом атрибуты класса делают скрытыми от внешних клиентов (уровень доступа private) .Доступ к этим атрибутам класса предоставляется через public- методы , пример getAdress() -1.32, setAdress(String adress)-1.35

Обратите внимание на параметр в описании модифицирующего метода – в этом методе в качестве параметра передается значение , которое необходимо присвоить атрибуту adress.

Порядок объявления метода следующий- модификатор доступа, тип возвращаемого значения, наименование метода и в скобках через запятую список параметров метода , с указанием типа и названия параметров.

Пример :

Строка 1.35 public void setAdress(String adress) , где public – модификатор доступа , void – тип возвращаемого значения(void обозначает , что метод ничего не возвращает) , setAdress(String adress) – название метода , в качестве параметра используется любая переменная , тип которой String.

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