
- •050101- Комп'ютерні науки
- •050102- Комп'ютерна інженерія
- •Структура класса
- •Синтаксис работы с атрибутами и методами классов.
- •Константы. Статические переменные и методы.
- •Пакеты в Java.
- •Модификаторы доступа
- •Инициализация переменных , типы переменных.
- •Наследование.
- •Интерфейсы.
- •Связь классов и интерфейсов.
- •Обработка иключений.
- •Многопоточность.
- •2009Приложение 1
Модификаторы доступа
В Java предусмотрено 4 вида модификаторов – public, protected, default(или пакетный, при этом ключевого слова для данного уровня доступа не предусмотрено см. Строку 1.10) и последний тип – private. Наличие различных модификаторов доступа обусловлено необходимостью реализовать в языке одну из важнейших особенностей ООП- инкапсуляцию. Инкапсуляция предполагает разделение поведения и свойств(атрибутов) классов на внешние, доступные другим классам , и внутренние, о которых внешним классам ничего не известно. Цель инкапсюляции- уйти от зависимости внешнего интерфейса класса(то , что могут использовать другие классы) от реализации. Чтобы малейшее изменение в классе не влекло за собой изменение внешнего поведения класса. Соответственно , максимально открытый уровень доступности – это public , максимально защищенный уровень – это private.
Public-уровень предполагает доступ к компоненту с этим модификатором из экземпляра любого класса и любого пакета.
Protected - уровень предполагает доступ к компоненту с этим модификатором из экземпляров родного класса и классов-потомков, независимо от того в каком пакете они находятся.
Default-уровень предполагает доступ к компоненту с этим модификатором из экземпляров любых классов , находящихся в одном пакете с этим классом.
Private- уровень предполагает доступ к компоненту с этим модификатором только из этого класса.
Для разных структурных элементов класса предусмотрена возможность применять только определенные уровни модификаторов доступа.
Для класса- только public и default.
Для свойств(атрибутов) класса – все 4 вида.
Для конструкторов – все 4 вида.
Для методов- все 4 вида.
Инициализация переменных , типы переменных.
Существует несколько классификаций типов переменных. Первый вид классификаций связан с типами данных , которые они(переменные ) могут представлять. Все типы данных в Java возможно разделить на примитивные и ссылочные типы. Примитивными типами называются такие, для которых данные содержатся в одной ячейке памяти, и эта ячейка не имеет подъячеек.
Ссылочными типами называются такие, для которых в ячейке памяти (ссылочной переменной) содержатся не сами данные, а только адреса этих данных, то есть ссылки на данные. При присваивании в ссылочную переменную заносится новый адрес, а не сами данные. Но непосредственного доступа к адресу, хранящемуся в ссылочных переменных, нет. Это сделано для обеспечения безопасности работы с данными. В отличии от С++ в Java отсутствует возможность работы с указателями.Существуют следующие примитивные типы данных- char,short,byte,int,long,float,double,boolean. К ссылочным типам относятся ссылки на экз. любых классов , а также массивы любых типов данных , в том числе и простых. Примеры объявления и инциализации переменных приведены ниже :
Примитивные типы
Листинг :
char ch1=34;
char ch2 , qw ;
ch2=’q’;
byte byt1=7;
short shor1=32000;
int in1=12;
long lon1=12L;
float fl1=12.34f;
double db1=12.34;
boolean bool1=false;
Обратите внимание на строки 2.2-2.3- это пример отложенной инициализации, когда происходит только объявление переменной , а первоначальное значение присваивается далее в коде, но до первого обращения к переменной. При обращении к переменной после ее объявления , тип переменной не указывается.
Ссылочные типы
Листинг 3:
Human hum3=new Human();
Human hum4=new Human("Сидоров С.П.");
Human hum5=new Human("Ричард Бах",74, "г. Николаев ,"+ "ул. Мархлевского 45",new Date(),"1234567890");
ArrayList ar_list1=new ArrayList();
int[] ar_int34=new int[10];
int[] ar_int38={1,3,2,56,45};
String str1="Это строка";
String str2=new String(str1);
String str3=new String("Это также строка");
Отличие объявления и инициализации ссылочных переменных заключается в использовании ключевого слова =new= вместе с одним из конструкторов класса. В строках 3.1-3.3 вы видите 3 разных способа создания экземпляров переменных, тип которых соответствует классу Human , при этом используются 3 разных вида конструктора этого класса. Все они(конструкторы) описаны в Листинге 1(1.16—1.31).
Синтаксис объявления и инициализации встроенных классов и классов собственной разработки , не отличается. Это видно на примере создания ссылки на экземпляр класса ArrayList(строка 3.4).
Некоторые особенности создания и инициализации экземпляров класса String и массивов видны в строках 3.5-3.9
Второй вид классификации переменных – по месту объявления. В зависимости от того в какой части класса объявлена переменная , необходимо, знать ряд особенностей их использования. Переменные класса или атрибуты класса объявляются при описании класса(пример –строки 1.10-1.14 Листинга 1). Обычно их инициализация происходит в конструкторах класса(Листинг 1 строка 1.9-1.31). Для них предусмотрена инициализация по умолчанию(она есть только у переменных класса). Так для атрибутов класа всех числовых типов , эти атрибуты инициализируются по умолчанию =0=, все ссылочные типы инициализируются нулевой ссылкой для которой предусмотрено ключевое слово =null= Локальные переменные – это переменные объявленные в теле любого метода класса или конструктора . Область видимости данных переменных начинается с момента объявления их в методе класса до конца метода. в котором они объявлены. Влиять на видимость локальной переменной в теле метода , возможно , с помощью фигурных скобок {}. Например :
Листинг 4.
public int metod1(){
int var_int=12;
{
String temp_str="значение 1";
}
int temp_str=45+var_int;
return temp_str ;
}
На примере этого листинга , видно , что объявление переменной temp_str в методе строка 4.4 не мешает объявить переменную в строке 4.6 с таким же именем и другого типа , благодаря тому , что видимость переменной , объявленной в строке 4.3 ограничена областью {}(строка 4.3, 4.5 ). Наличие локальной области не мешает
Использовать переменную var_int в строке 4.6.