Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Return new Complex(x - z.x, y - z.y);

Car alfaRomeo156, fordFocus, fiat500; | Fiat500.moveTo(35, 120); | Protected Master person; | Public double f(double x) | Abstract void voice(); | КОНСТРУКТОРИ КЛАСУ |


Читайте также:
  1. c) The firm must have faced increasing returns to scale
  2. Chapter IX. IRENE’S RETURN
  3. Eugene Fama, James D. MacBeth. (1973) Risk, return and equilibrium: empirical tests // Journal of Political Economy, vol.83, pp.607-636
  4. Income tax returns
  5. Inferred return type
  6. Oxygenated blood returns from the lungs through the 4 pulmonary veins (two veins from each lung) to open into the left atrium.
  7. Reimbursement of travel costs will only be done upon presentation of all (including return tickets) original tickets, receipt/invoices and boarding pass.

}

public Complex asterisk(Complex z){

Return new Complex(

x * z.x - y * z.y, x * z.y + y * z.x);

}

public Complex slash(Complex z){

double m = z.mod()*z.mod();

Return new Complex(

(x * z.x - y * z.y) / m, (y * z.x - x * z.y) / m);

}

}

Щоб добре зрозуміти, як користуватися this випишемо всі методи, в яких він використовується і рядом альтернативний метод без this.

Complex(double re, double im) { this.re =; this.im = im; } /*this допомагає відрізнити поля об’єкта re та im від переданих йому конструктором параметрів re та im, позначених тими ж символами*/ Complex(double re){this(re, 0.0); } Complex(){this(0.0, 0.0); } /*Фактично, this()(а не this) служить для виклику попереднього конструктора, в який передається нульова уявна частина. */ Complex(Complex z){this(z.re, z.im); } /*Теж саме, змінюється лише спосіб передачі параметрів у конструктор*/ public void setRe(double re){this.re = re;} public void setIm(double im){this.im = im;} Complex(double re, double im) { x = re; y = im; } /* Дійсна і уявна частина комплексного числа позначені як х і у, тому не треба вживати this для створення комплексного числа (об’єкта) за переданим у конструктор значенням re,im.*/ Complex(double re){x = re; y = 0.0; } Complex(){x = 0.0; y = 0.0; } /*Створюємо цілком нові конструктори*/ Complex(Complex z){x =z.x; y = z.y; } public void setRe(double re){x = re;} public void setIm(double im){y = im;} /*Тут же ми явно зекономили, завдяки вдалим позначенням змінних класу і параметрів конструкторів*/

МЕТОД main()

Будь-яка програма, оформлена як застосунок (application), повинна містити метод з іменем main. Він може бути один на всі застосунки або міститися у деяких класах цього застосунку, а може знаходитися і у кожному класі.

Метод main() записується як звичайний метод, може містити будь-які описи і дії, але він обовязково повинен бути відкритим (public), статичним (static), не повертати значення (void). Його аргументом обов’язково повинен бути масив рядків (string[]). За традицією цей масив називають args, хоча назва може бути довільною.

Ці особливості виникають через те, що метод main() викликається автоматично виконуючою системою Java на початку виконання застосунку. Під час виклику інтерпретатора Java вказується клас, де записаний метод main(), з якого необхідно почати виконання. Оскільки класів з методом main() може бути декілька, можна побудувати застосунок із додатковими точками входу, починаючи виконання застосунку у різних ситуаціях з різних класів.

Часто метод main() заносять у кожний клас з метою відлагодження. У цьому випадку у метод main() включають тести для перевірки роботи всіх методів класу.

При виклику інтерпретатора Java можна передати в метод main() декілька параметрів, які інтерпретатор заносить у масив рядків. Ці параметри перераховуються у рядку виклику Java через пробіл зразу після назви класу. Якщо ж параметр містить пробіли, треба взяти його у лапки.

Все це легко зрозуміти на прикладі лістинга 3.5, в якому записана програма, що виводить параметри, котрі передаються в метод main() при запуску.

Лістинг 2.5. Передача параметрів в метод main()

class Echo {

public static void main(String[] args){

for (int i = 0; i < args.length; i++)

System.out.println("args[" + i +"]="+ args[i]);

}

}

 

Як видно, назва класу не входить у число параметрів. Вона і так відома у методі main().

 

2.11. ВИДИМІСТЬ ЗМІННИХ

У мові Java нестатичні змінні можна оголошувати у будь-якому місці коду між операторами. Статичні змінні можуть бути тільки полями класу, а значит, не можуть оголошуватися всередині методів і блоків. Розглянемо на прикладі лістингу 2.6 різні випадки оголошення змінних.

Лістинг 2.6. Видимість та ініціалізація змінних

class ManyVariables{

static int x = 9, у; // Статичні змінні — поля класу

// Вони видимі у всіх методах і блоках класу

// Змінна у отримує значення 0

static{ // Блок ініціалізації статичних змінних

// Виконується один раз при першому завантаженні класу після

// ініціалізацій в оголошеннях змінних

x = 99; // Оператор виконується зовні будь0метода!

}

int а = 1, р; // Нестатичні змінні — поля екземпляра

// Відомі у всіх методах і блоках класа, в котрих вони

//не перекриті другими змінними з тим же іменем

// Змінна р отримує значення 0

{ // Блок ініціалізації екземпляра

// Виконується при створенні кожного екземпляра після

// ініціалізацій при оголошеннях змінних

р = 999; // Оператор виконується зовні будь-якого метода!

}

static void f(int b){ // Параметр метода b — локальна

// змінна, відома тільки всередині метода

int a = 2; // Це друга змінна з тим самим іменем "а"

// Вона відома тільки всередині метода f() і

// тут перекривє першу "а"

int с; // Локальна змінна, відома тільки у методі f()

//Не отримує жодного початкового значення

//і повинна бути визначена перед використаням

{ int c = 555; // Помилка! Спроба повторного оголошення

int х = 333; // Локальна змінна, відома тільки у цьому блоці

}

// Тут змінна х уже невідома

for (int d = 0; d < 10; d++){

// Змінна цикла d відома тількі в циклі

int а = 4; // Помилка!

int e = 5; // Локальна змінна, відома тільки в циклі for

e++; // Ініціалізується при кожному виконанні цикла

System.out.println("e = " + e); // Виводиться завжди "е = 6"

}

// Ту змінні d і е невідомі

}

public static void main(String[] args){

int a = 9999; // Локальна змінна, відома тільки всередині метода main()

F (a);

}

}

 

Зверніть увагу на те, що змінним класу і екземпляра неявно присвоюються нульові значення. Символи неявно одержують значення '\u0000', логічні змінні — значення false, посилання одержують значення null.

Локальні змінні неявно не ініціалізуються. Їм повинні або явно присвоюватися значення, або вони повинні визначатися до першого використання. Компілятор помічає невизначені локальні змінні і повідомляє про них.

У лістингу 2.6 зявилася ще одна нова конструкція: блок ініціалізації екземпляра (instance initialization). Це просто блок операторів у фігурних дужках, але записується він зовні будь-якого метода, прямо у тілі класу. Цей блок виконується при створенні кожного екземпляра, після ініціалізації при оголошенні змінних, але до виконання конструктора. Він відіграє таку ж роль, як і static-блок для статичних змінних. Він потрібний у тих випадках, коли конструктор написати не можна, а саме, - у безіменних внутрішніх класах.

3.КОНТРОЛЬНІ ЗАПИТАННЯ

1. Яке призначення ключового слова new? Explain what happens when this keyword is used in an application?

2. What is a default constructor? How are an object's instance variables initialized if a class has only a default constructor?

3. Explain the purpose of an instance variable.

4. Most classes need to be imported before they can be used in an application. Why is every application allowed to use classes System and String without first importing them?

5. Explain how a program could use class Scanner without importing the class from package java.util.

6. Explain why a class might provide a set method and a get method for an instance variable.

 


Дата добавления: 2015-11-14; просмотров: 71 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Private static int number;| ЛАБОРАТОРНЕ ЗАВДАННЯ

mybiblioteka.su - 2015-2024 год. (0.01 сек.)