OOP_Java_L2.ppt
- Количество слайдов: 16
Об’єктно-орієнтоване програмування Лекція № 5. Оголошення змінних і методів класу
Модифікатори доступу для змінної • • • public або protected, або private, визначають область видимості змінної; static - вказує, що змінна є змінною класу, а не змінною екземпляра класу; final - забороняє присвоєння значень змінної поза тілом класу, в якому вона оголошена; transient - вказує, що змінна не є частиною постійного стану об'єкта; volatile - визначає можливість асинхронного зміни змінної.
Модифікатор доступу • • • public вказує, що дана змінна буде доступна скрізь, де доступний клас, в якому вона оголошена; protected вказує, що дана змінна буде доступна як усередині пакета, що містить оголошення класу, в якому вона визначена, так і всередині будь-якого підкласу даного класу; private вказує, що дана змінна не буде доступна ніде крім тіла класу, в якому вона оголошена. За замовчуванням змінна вважається доступною скрізь усередині пакета, що містить клас, в якому вона оголошена, і не недоступна ні в якому іншому підкласі зазначеного класу в тому випадку, якщо підклас міститься в іншому пакеті.
Статичні змінні public class C { public C() { } static int b=3; static int c; static { b++; c = 10; } }
Визначення методів У мові Java визначення методу включає його оголошення і реалізацію. Визначення методу завжди вказується в тілі класу. Метод може мати модифікатори доступу, повертати значення і отримувати параметри. Метод може мати наступні модифікатори: • public, protected або private-модифікатори доступу; • static - модифікатор методу класу. • abstract, final, native або synchronized.
Для модифікаторів доступу методу визначені наступні правила: • • • public вказує, що даний метод буде доступний скрізь, де доступний клас, в якому він визначений; protected вказує, що даний метод буде доступний як всередині пакету, що містить оголошення класу, в якому він визначений, так і всередині будь-якого підкласу даного класу; private вказує, що даний метод не буде доступний ніде крім тіла класу, в якому він визначений. За замовчуванням метод вважається доступним скрізь усередині пакета, що містить клас, в якому він визначений, і недоступним ні в якому іншому підкласі зазначеного класу в тому випадку, якщо підклас міститься в іншому пакеті.
Приклад // Файл A. java package classa; public class A implements B { public A() { } static int b=1; public int Metod 1(){return a; } public static int Metod 2(){ return 0; } //Статический метод } interface B { final public static int a=1; // Статическая переменная int Metod 1(); } // Файл C. javapackage classa; public class C extends A { public C() { } static int b=3; public int Metod 1(){return a; } public static int Metod 2(){return 77; } public static void main(String[] args) { System. out. println(A. Metod 2()); System. out. println(C. Metod 2()); }}
Абстрактні методи public class A extends AA implements B { public A() { } public int Metod 1(){return 0; } public static int Metod 2(){return 0; } int Metod 3(){return 0; } public int Metod 4(){return 0; } } interface B { int Metod 1(); abstract int Metod 4(); } abstract class AA{ abstract int Metod 3(); }
Передача параметрів o o o Список формальних параметрів містить впорядковані та розділені комою описи параметрів (тип параметра та ідентифікатор параметра). Якщо метод не має параметрів, що передаються йому при виклику, то після імені методу вказується пара порожніх дужок. У мові Java всі параметри передаються за значенням. При передачі параметра-посилання його значенням є посилання на об'єкт, тому в метод передається посилання на екземпляр класу. Параметри в мові Java розглядаються як локальні змінні методу, специфіковані поза тілом методу. При виклику методу перед його виконанням відбувається обчислення виразів, які представляють фактичні параметри, що передаються методу, і присвоєння обчислених значень відповідним локальним змінним (формальним параметрам).
Посилання на поточний об’єкт class A { public int a; } class B extends A { public int a, b; public void Metod 1 ( ) { b=a; // Ссылка на this. a b=super. a; }}
Перевизначення методів Перевизначенням методу називається оголошення в підкласі методу, у якого ім'я, тип і список параметрів, в точності збігаються з відповідними атрибутами методу, раніше оголошеного в суперкласу. При перевизначенні методу використання модифікаторів доступу має відповідати таким умовам: • якщо метод суперкласу, який перевизначають, не містить жодного з модифікаторів доступу public, protected або private, то перевизначаючий метод не повинен мати модифікатора private. • якщо метод суперкласу який перевизначають, має модифікатор доступу protected, то перевизначаючий метод повинен мати модифікатор доступу public або protected. • якщо метод суперкласу який перевизначають, має модифікатор доступу public, то перевизначаючий метод повинен також мати модифікатор доступу public.
Виклик перевизначених методів class A { public void Metod 1() { } public static void Metod 2() { } } class B extends A { public Metod 1() { }. . . Metod 1(); // Вызов метода из класса B super. Metod 1(); // Вызов метода из класса A A. Metod 2(); }
Конструктори Им’я. Класу (Список. Параметрів) { Виклик. Конструкторів Блок. Операторів }
Приклад public class C extends A { public C() {this(1, 20); } // Вызов конструктора данного класса public C(int i, int j) { } }
Виклик конструкторів підпорядковується наступним правилам: o o при створенні об'єкта будь-якого заданого класу буде неявно виконаний ланцюжок викликів всіх конструкторів його суперкласів; першим буде виконано тіло конструктора для Object; кожний наступний конструктор в ланцюжку буде виконуватися тільки після виконання конструктора свого безпосереднього суперкласу; при створенні об'єкта будуть ініціалізовані всі змінні екземпляра.
Створення об’єкту При створенні об'єкта послідовно виконуються наступні дії: викликається конструктор, створюється новий об'єкт зазначеного типу і всі змінні екземпляра ініціалізувалися своїми значеннями за замовчуванням, потім формується посилання на створений і ініціалізований об'єкт. Це посилання і є значенням виразу, що створює об'єкт. Об'єкт може бути створений викликом методу new. Instance. В цьому випадку використовується конструктор без списку параметрів.
OOP_Java_L2.ppt